我想在本地docker容器上远程运行一个简单测试:
$docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e559bc98ae9c selenium/standalone-chrome-debug:latest "/opt/bin/entry_poin…" 10 seconds ago Up 6 seconds 0.0.0.0:4444->4444/tcp, 0.0.0.0:5900->5900/tcp new_selenium
我可以使用selenium config成功运行它:
driverWeb = new RemoteWebDriver(new URL(url), chromeBrowserCapabilities();
但是当我尝试让Serenity控制webdriver生命周期时,出现错误:
Dec 06, 2019 5:31:15 PM org.openqa.selenium.remote.DesiredCapabilities chrome INFO: Using `new ChromeOptions()` is preferred to `DesiredCapabilities.chrome()` [main] INFO net.thucydides.core.steps.ConsoleLoggingListener - STEP ERROR: net.thucydides.core.webdriver.DriverConfigurationError: Could not instantiate class org.openqa.selenium.chrome.ChromeDriver F[main] INFO net.thucydides.core.steps.ConsoleLoggingListener - STEP ERROR: net.thucydides.core.webdriver.DriverConfigurationError: Could not instantiate new WebDriver instance of type class org.openqa.selenium.chrome.ChromeDriver (session not created: No matching capabilities found Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53' System info: host: 'a77e0051b738', ip: '172.17.0.2', os.name: 'Linux', os.arch: 'amd64', os.version: '4.9.184-linuxkit', java.version: '1.8.0_222' Driver info: driver.version: unknown remote stacktrace: #0 0x55d7b005a7e9 <unknown>
这是serenity.conf:
webdriver { driver = chrome
timeouts {
implicitlywait = 7000
fluentwait = 10000
}
}
headless.mode = false
chrome.capabilities.acceptSslCerts = true
chrome.capabilities.handlesAlerts = true
#
# Chrome options can be defined using the chrome.switches property
#
chrome.switches="""--start-maximized;--test-type;--no-sandbox;--ignore-certificate-errors;
--disable-popup-blocking;--disable-default-apps;--disable-extensions-file-access-check;
--incognito;--homepage=about:blank;--disable-infobars;--disable-gpu"""
webdriver.chrome.driver = "drivers/chromedriver"
webdriver.gecko.driver = "drivers/geckodriver"
我不知道为什么会出现此错误以及如何解决。
请帮助我! 谢谢!
答案 0 :(得分:0)
如果您的节点在docker中运行,请尝试将驱动器配置为远程驱动器。
以下是直接取自宁静文档(https://serenity-bdd.github.io/theserenitybook/latest/serenity-grid.html#_configuring_your_serenity_tests)
的示例。webdriver {
driver = remote
remote {
url="http://localhost:4444/wd/hub"
driver=chrome
}
}
答案 1 :(得分:0)
您不需要为此设置功能。您可以在运行测试之前区分本地和远程,如下所示。
运行为;
MVN全新安装验证-Dmaven.test.failure.ignore = true
# Remote
webdriver {
driver = remote
remote {
url="http://YOUR_IP:YOUR_PORT/wd/hub"
driver=chrome
}
}
#Local
#webdriver {
# driver = chrome
#}
zalenium {
screenResolution = "1280x720"
idleTimeout = 150
}
headless.mode=false
serenity {
tag.failures = "true"
linked.tags = "issue"
restart.browser.for.each = scenario
}
drivers {
windows {
webdriver.chrome.driver = src/test/resources/webdriver/windows/chromedriver.exe
}
mac {
webdriver.chrome.driver = src/test/resources/webdriver/mac/chromedriver
}
linux {
webdriver.chrome.driver = src/test/resources/webdriver/linux/chromedriver
}
}