【问题标题】:How to get broweser name when each thread in parallel test execution with multiple browsers in TestNG, Cucumber and Selenide如何在TestNG,Cucumber和Selenium中使用多个浏览器并行测试执行每个线程时获取浏览器名称
【发布时间】:2021-10-23 18:52:38
【问题描述】:

有没有办法获取使用 Selenide 运行的每个线程的当前浏览器名称?
我将 TestNG Cucumber 与多个浏览器集成。
所以我需要知道 @After 钩子,哪个浏览器正在运行测试。
并基于浏览器做一些事情。

    <?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<suite name="TestSuite" thread-count="8" parallel="tests" >
    <test name="ChromeTest">
        <parameter name="browser" value="chrome" />
        <classes>
            <class name="com.site.runner.TestRunner">
            </class>
        </classes>
    </test>
    <test name="FirefoxTest">
        <parameter name="browser" value="firefox" />
        <classes>
            <class name="com.site.runner.TestRunner">
            </class>
        </classes>
    </test>
    <test name="SafariTest">
        <parameter name="browser" value="safari" />
        <classes>
            <class name="com.site.runner.TestRunner">
            </class>
        </classes>
    </test>
</suite>

硒化集驱动

public static synchronized void setDriver(String browser) {
        setBrowser(browser);
    }

public String setBrowser(String browser){

        switch(browser){
            case "chrome":
                return setCapabilities(browser);
            case "firefox":
                return Configuration.browser = "firefox";
            case "edge":
                return Configuration.browser = "edge";
            default:
                return "No Browser found";
        }

public static void directToBrowserUrl(String browserUrl) {
        open(browserUrl);
    }

【问题讨论】:

  • 可以添加创建WebDriver的代码吗?
  • @NandanA 添加了 WebDriver 代码 sn -p
  • 解决方案有效吗?

标签: automated-tests cucumber testng selenide


【解决方案1】:

@After方法中获取drivercapabilitiescurrent thread

代码:

 Capabilities capabilities = ((RemoteWebDriver) driver).getCapabilities();
    String browserName = capabilities.getBrowserName();
    String threadName = Thread.currentThread().getName();
    long threadId = Thread.currentThread().getId();
    
    System.out.println("Thread name & browser name: "+threadName +" --> "+browserName);
    System.out.println("Thread id & browser name: "+threadId +" --> "+browserName);

    if(browserName.equalsIngnoreCase("Chrome"){
     //do your stuff
    }

输出:

Thread name & browser name: com.CallerScript.Caller.main() --> chrome
Thread id & browser name: 16 --> chrome

【讨论】:

  • 由于我使用了硒化物,所以我在下面Capabilities capabilities = ((RemoteWebDriver) WebDriverRunner.getWebDriver()).getCapabilities();
猜你喜欢
  • 2017-12-14
  • 1970-01-01
  • 2016-08-16
  • 1970-01-01
  • 2012-04-30
  • 2012-08-03
  • 2016-05-19
  • 1970-01-01
  • 2021-04-13
相关资源
最近更新 更多