一尘不染

使用Selenium Web驱动程序在多个浏览器上运行测试

selenium

我正在尝试通过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是否以这种方式工作,或者我的理解是错误的?


阅读 300

收藏
2020-06-26

共1个答案

一尘不染

我实际上已经在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

祝好运!

2020-06-26