0

当我尝试运行我的 Serenity 测试自动化时,我调用了以下 maven 命令:

mvn clean verify -Dentry_point="**/*SmokeTestSuite.java" -Dwebdriver.driver="iexplorer" -Dwebdriver.ie.driver="<my path>\IEDriverServer.exe"

我提供了 iexplorer 作为驱动程序和 IEDriverServer.exe 的路径。我的 Internet Explorer 版本是 11.x。当我运行 ie 驱动程序时,我需要添加 safari.exe 的路径。

以下是错误堆栈跟踪:

[pool-1-thread-1] ERROR net.thucydides.core.webdriver.WebDriverFacade - FAILED TO CREATE NEW WEBDRIVER_DRIVER INSTANCE class org.openqa.selenium.ie.InternetExplorerDriver: Could not instantiate class org.openqa.selenium.ie.InternetExplorerDriver
net.thucydides.core.webdriver.UnsupportedDriverException: Could not instantiate class org.openqa.selenium.ie.InternetExplorerDriver
    at net.thucydides.core.webdriver.WebDriverFactory.newWebdriverInstance(WebDriverFactory.java:128)
    at net.thucydides.core.webdriver.WebDriverFacade.newDriverInstance(WebDriverFacade.java:142)
    at net.thucydides.core.webdriver.WebDriverFacade.newProxyDriver(WebDriverFacade.java:133)
    at net.thucydides.core.webdriver.WebDriverFacade.getProxiedDriver(WebDriverFacade.java:103)
    at net.thucydides.core.webdriver.WebDriverFacade.getTitle(WebDriverFacade.java:213)
    at net.serenitybdd.jbehave.SerenityReporter.managedDriverIsNotAlive(SerenityReporter.java:215)
    at net.serenitybdd.jbehave.SerenityReporter.beforeScenario(SerenityReporter.java:188)
    at org.jbehave.core.reporters.DelegatingStoryReporter.beforeScenario(DelegatingStoryReporter.java:55)
    at org.jbehave.core.reporters.ConcurrentStoryReporter.beforeScenario(ConcurrentStoryReporter.java:158)
    at org.jbehave.core.embedder.PerformableTree$PerformableScenario.perform(PerformableTree.java:877)
    at org.jbehave.core.embedder.PerformableTree$PerformableStory.performScenarios(PerformableTree.java:811)
    at org.jbehave.core.embedder.PerformableTree$PerformableStory.perform(PerformableTree.java:784)
    at org.jbehave.core.embedder.PerformableTree.performCancellable(PerformableTree.java:416)
    at org.jbehave.core.embedder.PerformableTree.perform(PerformableTree.java:387)
    at org.jbehave.core.embedder.StoryManager$EnqueuedStory.call(StoryManager.java:291)
    at org.jbehave.core.embedder.StoryManager$EnqueuedStory.call(StoryManager.java:265)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at java.lang.Thread.run(Thread.java:748) .                                
Caused by: java.lang.RuntimeException: Safari could not be found in the path!
Please add the directory containing ''Safari.exe'' to your PATH environment
variable, or explicitly specify a path to Safari like this:
*safari c:\blah\Safari.exe
    at org.openqa.selenium.browserlaunchers.locators.SingleBrowserLocator.findBrowserLocationOrFail(SingleBrowserLocator.java:42)
    at org.openqa.selenium.safari.SafariDriverCommandExecutor.start(SafariDriverCommandExecutor.java:100)
    at org.openqa.selenium.safari.SafariDriver.startClient(SafariDriver.java:76)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:119)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:144)
    at org.openqa.selenium.safari.SafariDriver.<init>(SafariDriver.java:62)
    at org.openqa.selenium.safari.SafariDriver.<init>(SafariDriver.java:53)
    at net.thucydides.core.webdriver.strategies.InternetExplorerDriverBuilder.newInstance(InternetExplorerDriverBuilder.java:30)
    at net.thucydides.core.webdriver.WebDriverFactory.newWebdriverInstance(WebDriverFactory.java:116)
    ... 19 more
4

2 回答 2

0

此错误消息...

ERROR net.thucydides.core.webdriver.WebDriverFacade - FAILED TO CREATE NEW WEBDRIVER_DRIVER INSTANCE class org.openqa.selenium.ie.InternetExplorerDriver: Could not instantiate class org.openqa.selenium.ie.InternetExplorerDriver
net.thucydides.core.webdriver.UnsupportedDriverException: Could not instantiate class org.openqa.selenium.ie.InternetExplorerDriver

...意味着程序无法创建/产生所需的新InternetExplorerDriver实例。

此错误的主要原因是您用于执行Serenity 测试自动化套件的容易出错的maven命令,如下所示:

mvn clean verify -Dentry_point="**/*SmokeTestSuite.java" -Dwebdriver.driver="iexplorer" -Dwebdriver.ie.driver="<my path>\IEDriverServer.exe"

最常用的WebDriver变体是:

  • -Dwebdriver.gecko.driver- 为了geckodriver.exe
  • -Dwebdriver.chrome.driver- 为了chromedriver.exe
  • -Dwebdriver.ie.driver- 为了IEDriverServer.exe

但是,由于Serenity 测试自动化框架尝试访问Safari.exe的默认配置,因此您使用了不正确的参数以及-Dwebdriver.driver正确的iexplorer

解决方案

您需要删除容易出错的参数-Dwebdriver.driver="iexplorer",您将通过。

于 2018-05-11T21:12:48.580 回答
0

webdriver.driver是设置驱动程序的正确 Serenity 属性。我不确定 DebajanB 所说的“容易出错”是什么意思——通常,它可以工作,也可以不工作,如果不工作,那就是配置问题。要检查驱动程序属性是否在 Maven 中正确配置(您可能需要将其作为 surefire 或故障安全插件中的系统属性传递到您的测试中),查看它是否适用于 firefox。

对 webdriver.gecko.driver 等的引用告诉 Serenity 在哪里可以找到特定驱动程序的二进制文件,但它们不会告诉 Serenity 使用哪个驱动程序。您可以配置多个驱动程序二进制文件,然后选择将其中一个与webdriver.driver.

Safari 不是 Serenity 的默认驱动程序,Firefox 是,所以对 Safari 的引用很奇怪。这可能是来自旧版本的缺陷/误导性错误消息 - 您使用的是最新版本的 Serenity 吗?

于 2018-05-13T02:10:14.550 回答