我试图通过 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 上运行。
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/其他代码中执行此操作,我也强烈建议使用页面对象 http://code.google.com/p/selenium/wiki/PageObjects.
祝你好运!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)