Selenium NoSuchMethodError

4
我正在编写一套自动化测试框架,并已经编写了大量代码。然而,我遇到了一个错误,似乎无法修复或找到解决方法。
问题发生在selenium尝试回答日期问题并从日期下拉菜单中进行选择时。我已经做过很多次而没有问题,但出现了标题中显示的错误。在尝试在Google上寻找解决方案后,我决定来这里求助,因为似乎没有相似的解决方案。
我的自动化测试代码停止工作的位置是:
new Select(driver.findElement(By.id("AMOUNT_OF_DHP_DATE_FROM_d"))).selectByVisibleText("4th");

new Select(driver.findElement(By.id("AMOUNT_OF_DHP_DATE_FROM_m"))).selectByIndex(4);
    driver.findElement(By.id("AMOUNT_OF_DHP_DATE_FROM_y")).sendKeys("2017");
    driver.findElement(By.id("AMOUNT_OF_DHP_WEEKLY")).sendKeys("50");

new  Select(driver.findElement(By.id("AMOUNT_OF_DHP_DATE_TO_d"))).getFirstSelectedOption();

new Select(driver.findElement(By.id("AMOUNT_OF_DHP_DATE_TO_m"))).getFirstSelectedOption();

driver.findElement(By.id("AMOUNT_OF_DHP_DATE_TO_y")).sendKeys("2017");
clickNext();

错误发生在使用 selectByVisibleTextselectByIndex 方法的行上。我以前已经用过这些方法数百次,没有任何问题。当我在Selenium IDE中在浏览器中运行测试时,它可以正常执行。但是一旦代码转移到Eclipse中,它就无法工作。

我唯一可能想到的是将项目从JUnit转换为TestNG.. 这会有什么影响吗?尽管如此,我以前也这样做过,没有任何问题。

非常感谢您的帮助!

编辑

堆栈跟踪:

java.lang.NoSuchMethodError: org.openqa.selenium.WebElement.setSelected()V 在org.openqa.selenium.support.ui.Select.selectByVisibleText(Select.java:111)处发生错误 在tns_automation.DHP_Forms.DhpAbstractTest.answerAmountOfDHPQuestion(DhpAbstractTest.java:348)中 在tns_automation.DHP.KnowsleyDHPTest.completeAssessmentFormAndBudgetToolBeforeDownloadingPDFFromInTrayWithCookiesEnabled(KnowsleyDHPTest.java:62)中完成评估表和预算工具下载PDF之前启用Cookie 在sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)处 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)处 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)处 在java.lang.reflect.Method.invoke(Method.java:498)处 在org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:108)处调用方法 在org.testng.internal.Invoker.invokeMethod(Invoker.java:661)处 在org.testng.internal.Invoker.invokeTestMethod(Invoker.java:869)处 在org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1193)处 在org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)处 在org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)处 在org.testng.TestRunner.privateRun(TestRunner.java:744)处 在org.testng.TestRunner.run(TestRunner.java:602)处 在org.testng.SuiteRunner.runTest(SuiteRunner.java:380)处 在org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375)处 在org.testng.SuiteRunner.privateRun(SuiteRunner.java:340)处 在org.testng.SuiteRunner.run(SuiteRunner.java:289)处 在org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)处 在org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)处 在org.testng.TestNG.runSuitesSequentially(TestNG.java:1301)处 在org.testng.TestNG.runSuitesLocally(TestNG.java:1226)处 在org.testng.TestNG.runSuites(TestNG.java:1144)处 在org.testng.TestNG.run(TestNG.java:1115)处 在org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:126)处 在org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:152)处 在org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:57)处

提供完整的异常堆栈以更好地理解。 - murali selenium
堆栈跟踪 - user3008643
请检查 DhpAbstractTest.java 文件的第 348 行,可能存在一些类型错误。同时,请确认导入语句 org.openqa.selenium.support.ui.Select 是否正确。 - murali selenium
上面的代码直接来自于DhpAbstractTest,而且在我的TestClass中被调用。导入也是正确的。 - user3008643
我已经解决了这个问题。我只是在我的pom.xml中导入了最新的selenium依赖项。虽然仍然有点奇怪,但现在已经修复了。感谢您的帮助 :) - user3008643
4个回答

2

通过将最新的selenium maven依赖项导入到我的pom.xml中,解决了这个问题。尽管我在其他项目中使用过它,但我仍然不明白为什么会出现这个问题。修复此问题的maven依赖项:

    <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>3.3.1</version>
    </dependency>

0

我遇到了同样的问题,然后我尝试像user3008643的回答一样添加依赖项,但它仍然无法工作。

user3008643说这对他有效,所以我仔细查看了我的pom.xml,然后发现了一些奇怪的东西:

我导入了3个版本的selenium依赖项。

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-chrome-driver</artifactId>
    <version>3.11.0</version>
</dependency>
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-support</artifactId>
    <version>2.0a7</version>
</dependency>
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>3.12.0</version>
</dependency>

这真的是无稽之谈,所以我将其更改为相同版本3.12

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-chrome-driver</artifactId>
    <version>3.12.0</version>
</dependency>
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-support</artifactId>
    <version>3.12.0</version>
</dependency>
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>3.12.0</version>
</dependency>

更新依赖后,问题已经被修复。

我认为问题与依赖项有关,您必须导入相同版本的依赖项。


0

0
在我的情况下,构造函数引起了这个问题,我将其删除了,但后来发现我没有将构造函数设为公共的。可能将构造函数设为公共的会有所帮助。Selenium Java*

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接