我正在尝试运行以下selenium代码:
WebDriver driver;
System.setProperty("webdriver.chrome.driver", "C:\\Driver\\chromedriver.exe");
driver = new ChromeDriver();
driver.get("http://www.behsad.com/nportal/Default.aspx?tabid=55");
driver.findElement(By.id("dnn_dnnUser_enhancedRegisterLink")).click();
WebDriverWait wait=new WebDriverWait(driver, 30);
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(
By.id("dnn_dnnUser_enhancedRegisterLink")));
element.click();
这是我的pom.xml:
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-picocontainer</artifactId>
<version>1.2.5</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.4.0</version>
</dependency>
最后有代码导入:
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
代码卡在行中:
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(
By.id("dnn_dnnUser_enhancedRegisterLink")));
并抱怨:
java.lang.NoSuchMethodError: org.openqa.selenium.support.ui.WebDriverWait.until(Lcom/google/common/base/Function;)Ljava/lang/Object;
答案 0 :(得分:0)
Selenium 3.1.0以后需要使用guava 21作为wait.until方法。 尝试将此添加到您的pom,最好是在顶部附近,以防另一个依赖项导入和旧版本的guava:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>21.0</version>
</dependency>
答案 1 :(得分:0)
我认为你的问题出在这行代码中
WebElement element=wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("dnn_dnnUser_enhancedRegisterLink")));
由于Wait.until用于告诉您的Web驱动程序等待某个操作发生,这是您的案例中ID =“dnn_dnnUser_enhancedRegisterLink”所在元素的可见性 但是此方法不返回Web元素对象,因此您无法使用它来定义Web元素
相反,你只需要写:
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("dnn_dnnUser_enhancedRegisterLink")));
答案 2 :(得分:0)
它适用于最新的jar:
Appium 1.8.1
Java-client 5.0.4
Selenium-java 3.7.1