我正在尝试通过for循环在多个浏览器中运行相同的测试,但它始终仅在Firefox上运行。
bros = ['FIREFOX','CHROME','INTERNET EXPLORER'] for bro in bros: print "Running "+bro+"\n" browser = webdriver.Remote( command_executor='http://10.236.194.218:4444/wd/hub', desired_capabilities={'browserName': bro, 'javascriptEnabled': True}) browser.implicitly_wait(60000) browser.get("http://10.236.194.156")
一项有趣的观察;当我包含该参数时,platform: WINDOWS它仅在Internet Explorer上运行。
platform: WINDOWS
Selenium Webdriver是否以这种方式工作,或者我的理解是错误的?
我实际上已经在Java中完成了此操作,以下对我来说效果很好:
... import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.RemoteWebDriver; ... DesiredCapabilities[] browsers = {DesiredCapabilities.firefox(),DesiredCapabilities.chrome(),DesiredCapabilities.internetExplorer()}; for(DesiredCapabilities browser : browsers) { try{ System.out.println("Testing in Browser: "+browser.getBrowserName()); driver = new RemoteWebDriver(new URL("http://127.0.0.1:4444/wd/hub"), browser); ...
如果您要使用其他语言编写测试,则当然需要对此进行调整,我知道Java可以实现这一点,否则不确定。
另外,我也同意您要尝试做的事情,我认为最好是使用一个可以在不同浏览器上运行相同测试的类,而不是将代码重复多次并且变得笨拙。如果您使用Java /其他代码执行此操作,则我强烈建议您使用Page Object。
祝好运!