我试图运行我的旧的selenium实践脚本,一个月前运行良好,现在抛出错误,特别是在构造函数
PageFactory.initElements(driver, this);
有什么建议吗?
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;
import com.crm.qa.base.TestBase;
public class LoginPage extends TestBase {
@FindBy(name="username")`enter code here`
WebElement Username;
@FindBy(name="password")
WebElement Password;
@FindBy(xpath="//div[@class='input-group-btn']//input")
WebElement LoginBtn;
@FindBy(xpath="//a[contains(text(),'Sign Up')]")
WebElement SignUPLink;
@FindBy(xpath="//a[@class='navbar-brand']//img")
WebElement CRMPROLogo;
public LoginPage() {
PageFactory.initElements(driver, this);
}
//#Actions
public String ValidateLoginPageTitle() {
return driver.getTitle();
}
public boolean ValidateCRMlogoImg() {
return CRMPROLogo.isEnabled();
}
public HomePage ValidateLoginTest(String un, String pwd) throws InterruptedException {
Username.sendKeys(un);
Password.sendKeys(pwd);
LoginBtn.click();
Thread.sleep(3000);
return new HomePage();
}
}
堆栈追踪
FAILED CONFIGURATION: @BeforeMethod SetUp
java.lang.NoSuchMethodError: 'void org.openqa.selenium.support.PageFactory.initElements(org.openqa.selenium.SearchContext, java.lang.Object)'
at com.crm.qa.pages.LoginPage.<init>(LoginPage.java:29)
at com.crm.qa.testcases.LoginPageTest.SetUp(LoginPageTest.java:24)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:577)
2条答案
按热度按时间rryofs0p1#
NoSuchMethodError通常意味着您使用一个版本编译,但正在使用不同的(通常较旧的)版本运行,因此出现异常。
解决方案是确保您正在使用的Java、Selenium和任何其他第三方库的相同版本上进行开发和运行
zyfwsgd62#
我刚刚重新添加了selenium jar文件和TestNG库,它就工作了!
解决方法:项目名称〉右键单击〉构建路径〉配置构建路径...〉添加外部库(添加Selenium jar文件)和〉添加库(添加TestNG)