【问题标题】:Version update to SELNEIUM 4.7.0 throwing NoSuchMethod Exception for PagefactorySELNEIUM 4.7.0 的版本更新抛出 Pagefactory 的 NoSuchMethod 异常
【发布时间】:2022-12-17 17:07:20
【问题描述】:
我正在将我的 selenium 项目从 3.141 更改为 4.7.0,但我在 PageFactory 初始化时看到 NoSuchElementException。
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.7.1</version>
</dependency>
public WebElementsLogin(WebDriver driver) {
this.driver = driver;
PageFactory.initElements(this.driver, this);
}
java.lang.NoSuchMethodError: 'void org.openqa.selenium.support.PageFactory.initElements(org.openqa.selenium.SearchContext, java.lang.Object)'
【问题讨论】:
标签:
java
selenium
google-chrome
selenium-chromedriver
page-factory
【解决方案1】:
使用硒 4.7.1 和 JDK 11:
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.7.1</version>
</dependency>
public class Google {
private WebDriver driver;
@FindBy(name = "q")
private WebElement searchField;
public Google(WebDriver driver){
this.driver = driver;
PageFactory.initElements(driver, this);
}
public void searchFor(String text){
searchField.sendKeys(text);
searchField.sendKeys(Keys.ENTER);
}
public void navigateTo(){
driver.get("https://google.com");
}
public static void main(String[] args) {
WebDriverManager.chromedriver().setup();
WebDriver chrome = new ChromeDriver();
Google google = new Google(chrome);
google.navigateTo();
google.searchFor("Selenium");
}
}
一切都按预期工作。
更正此行:
PageFactory.initElements(this.driver, this);