我有很多WebElements 例如,我声明了一个WebElement a
@FindBy(id="BtnLogin")
private WebElement btnLogin;
以同样的方式,我创建了“N”个WebElements 每次我不能使用“driver.findElement()”函数所以我写了一个函数
public static void WebElementClick(WebElement we)
{
we.click();
}
当控件进入线路时,WebElementclick函数中的we.click()它显示NullPointerException作为结果我的目的是失败
我不知道该怎么做,有人请帮助我:)
答案 0 :(得分:0)
您的getName()
应该收到选择器,它应该:find element - >点击,你可以从上面的链接中得到一个例子。
在你的情况下,你似乎没有使用等待,WebElementClick
它试图点击字符串。
使用find将返回一个可使点击可用的对象。
该方法应包含以下内容:WebElementClick
Ant然后使用单击此方法返回的内容。如果您愿意,也可以使用css。
答案 1 :(得分:0)
public class testJava{
@Test
public void testMethod() throws InterruptedException {
WebDriver driver = new FirefoxDriver();
pageClass pageClass = PageFactory.initElements(driver, pageClass.class);
driver.get("http://www.facebook.com");
Thread.sleep(5000);
pageClass.clickLoginBtn();
}}
public class pageClass {
@FindBy(id = "loginbutton")
private WebElement loginBtn;
WebDriver driver;
public pageClass(WebDriver driver) {
this.driver = driver;
}
public void clickLoginBtn()
{
click(loginBtn);
}
public void click(WebElement we)
{
we.click();
}}
使用页面类的最佳做法&测试类。试试这个它会帮助你我猜。 您可以使用驱动程序查找&单击元素。
答案 2 :(得分:0)
我认为该驱动程序可能会在它出现之前尝试点击元素。单击WebElement之前的好习惯是等待WebElement可单击。我会尝试:
public static void WebElementClick(WebElement we)
{
wait.forElementClickable(we);
we.click();
}