我正在尝试为我的投资组合构建一个自动化测试项目。但我面临着同样的问题。我创建了一个 Docker YAML 文件来编写配置以在 chrome 和 firefox 浏览器上运行执行。下面是YAML文件的截图
我还创建了一个类,用于根据 POM 文件调用执行,我将其称为抽象测试文件。
public abstract class AbstractTest {
protected WebDriver driver;
@BeforeTest
public void setDriver() {
if(Boolean.getBoolean("selenium.grid.enabled"))
{
try {
this.driver = getRemoteDriver();
} catch (MalformedURLException e) {
e.printStackTrace();
}
} else {
this.driver = getLocalDriver();
}
}
@SuppressWarnings("deprecation")
private WebDriver getRemoteDriver() throws MalformedURLException {
Capabilities capabilities;
if(System.getProperty("browser").equalsIgnoreCase("chrome"))
{
capabilities = new ChromeOptions();
} else {
capabilities = new FirefoxOptions();
}
return new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capabilities);
}
private WebDriver getLocalDriver() {
WebDriverManager.chromedriver().setup();
return new ChromeDriver();
}
@AfterTest
public void quitDriver() {
this.driver.quit();
}
}
即使在 POM.xml 文件中将 selenium.grid.enabled 传递为 TRUE 之后,我的执行仍在本地运行。我已附上 POM.xml 屏幕截图。
selenium 网格中没有任何运行。 有谁可以帮忙吗?
检查 Selenium Grid Hub 和节点设置:
java -jar selenium-server-standalone-<version>.jar -role hub
java -Dwebdriver.chrome.driver=<path_to_chromedriver> -jar selenium-server-standalone-<version>.jar -role node -hub http://localhost:4444/grid/register
注意:使用 ChromeDriver 可执行文件的实际路径调整 <path_to_chromedriver>
。检查 Docker 配置:
验证POM配置:
selenium.grid.enabled
属性设置为 true
。确保在您的 AbstractTest
类中正确读取该属性。
<properties>
<selenium.grid.enabled>true</selenium.grid.enabled>
</properties>
检查POM中的浏览器属性:
AbstractTest
课程中的条件。
<properties>
<browser>chrome</browser>
</properties>
记录和调试:
AbstractTest
类中添加一些日志语句以打印属性的值并检查它们是否设置正确。网络配置: