gpt4 book ai didi

java - 如何使用 @BeforeSuite 注释通过 Selenium + TestNG 运行多个浏览器 session (并行执行)

转载 作者:行者123 更新时间:2023-12-02 11:29:12 24 4
gpt4 key购买 nike

我可以在没有 @BeforeSuite 注解的情况下运行多个 Chrome 浏览器 session ,但有时我需要分配一些变量或在 @BeforeSuite 中执行某些操作在进入 @BeforeClass@BeforeTest 之前,同时我需要并行启动多个浏览器 session 。我怎样才能做到这一点 ?

这是我的代码的简化示例,其中我使用 @BeforeSuite 分配一些变量,然后从 TestNG.xml 调用 2 个并行测试。它只会调用 1 个测试(而不是 2 个)。

但是如果我不使用 @BeforeSuite ,它将完美地工作(两个测试将并行运行)。

是否可以运行并行测试,同时仍然使用 @BeforeSuite ?有时我们确实需要在某些测试场景中使用@BeforeSuite并调用多个浏览器 session 。

谢谢。

public class MyClass {
String baseURL;
String browser;

@BeforeSuite
private void setTheVariables() {
//Some codes here
//Some codes here
this.browser = "chrome";
}


@BeforeClass
private void myBeforeClass() {
//Some codes here
//Some codes here
}


@BeforeTest
private void myBeforeClass() {
//Some codes here
//Some codes here
}


@Test
@Parameters("baseURL")
public void f(String baseURL) {

if (this.browser == "chrome") {
System.setProperty("webdriver.chrome.driver", "C:\\\\Selenium\\\\chromedriver.exe");
DesiredCapabilities caps = DesiredCapabilities.chrome();
LoggingPreferences logPrefs = new LoggingPreferences();
logPrefs.enable(LogType.BROWSER, Level.ALL);
caps.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);
WebDriver driver = new ChromeDriver(caps);
System.out.println("I am going to " + baseURL);
driver.get(baseURL);
}
}
}

这是我的testNG.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="TestSuite" parallel="tests" thread-count="2">



<test name="Test1" preserve-order="true">
<parameter name="baseURL" value="http://www.amazon.com" />

<classes>
<class name="package.myClass" />
</classes>
</test>



<test name="Test2" preserve-order="true">
<parameter name="baseURL" value="http://www.google.com" />

<classes>
<class name="package.myClass" />
</classes>

</test>



</suite>

最佳答案

Beforesuite 带注释的方法在 testNG XML 之前运行。因此,您必须使用此顺序下方的另一个注释,即 BeforeClass 注释来设置 java 类中的浏览器类型。在 testNG xml 中添加名为 browser 的参数以传递浏览器类型。这将使并行执行成为可能。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="TestSuite" parallel="tests" thread-count="2">
<test name="Test1" preserve-order="true">
<parameter name="baseURL" value="http://www.amazon.com" />
<parameter name="browser" value="chrome">
<classes>
<class name="package.myClass" />
</classes>
</test>
<test name="Test2" preserve-order="true">
<parameter name="baseURL" value="http://www.google.com" />
<parameter name="browser" value="firefox">
<classes>
<class name="package.myClass" />
</classes>
</test>
</suite>

关于java - 如何使用 @BeforeSuite 注释通过 Selenium + TestNG 运行多个浏览器 session (并行执行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49400919/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com