我正在尝试使用以下代码找到webelement:
private WebElement loc_Start;
public void clickButton() {
loc_Start.findElement(By.xpath("//button[contains(text(), 'Start')]")).click();
}
我没有看到代码中的任何错误。我也试过使用@FindBy注释,这给了我同样的错误。
答案 0 :(得分:2)
如果您尝试使用PageFactory实现它,
public class Page{
@FindBy(xpath=" //button[contains(text(), 'Start')] ")
private WebElement loc_Start;
public void clickButton() {
// to initialize page - else u will get null pointer exception
Page page = PageFactory.init(driver, Page.class);
page.loc_Start.click();
}
}
如果不使用页面工厂
private WebElement loc_Start = driver.findElement(By.xpath("//button[contains(text(), 'Start')]"));
public void clickButton() {
loc_Start.click ();
}
您正在获取NullPointerException,因为您尚未初始化loc_Start变量。
答案 1 :(得分:0)
您的webelement由于某种原因被用于查找元素。使用您的网络驱动程序。
更改loc_Start
loc_Start.findElement(By.xpath("//button[contains(text(), 'Start')]")).click();
到您的驱动程序名称
driver.findElement(By.xpath("//button[contains(text(), 'Start')]")).click();
答案 2 :(得分:-1)
我也遇到了同样的错误。我做的错误是尝试使用Webelement查找元素。相反,我应该使用Webdriver来做到这一点,例如
Webelement myelement=driver.findelement(by.xpath());
myelement.click() // or whatever function you want to perform.
在将驱动程序首次初始化为webelement之后,我们可以直接使用webelemnt查找元素,而无需使用
myelement.findelement(by.xpath()).click();
注意:在第一次安装webdriver后,这种直接使用webelement查找元素的方法是明智的。在每个函数中,您都必须像这样使用它:-
Webelement myelement=driver.findelement(by.xpath());
myelement.click();
然后对于下一个元素,我们可以使用->
myelement.findelement(by.xpath()).click();
希望这会有所帮助!