我现在在新页面上有页面对象类,其中编写了方法。当我单击第一页上的链接打开新页面时,它按预期工作。但是,当我尝试在新页面上使用元素时,我得到的只是 NullPointException
或 NoSuchElementException
。
我尝试过使用 xpath 并尝试过类,但最终遇到了同样的问题。 检查了 Iframe,没有。 Id 是唯一且静态的。 我在单击链接打开新页面的同一个类上编写了这些方法,以确保驱动程序不为“空”。 此外,我还添加了 10 秒的线程 sleep ,以确保页面正确加载
这是 html:
<div class="lcc-form-field">
<input type="text" name="firstName" id="firstName" maxlength="40" tabindex="8" class="">
<div class="lcc-form-field">
<label class="lcc-form-label lcc-form-label-required" for="firstName">
First Name<sup class="sup-asterisk">*</sup>
</label><label class="lcc-form-label lcc-form-label-required" for="lastName">
Last Name<sup class="sup-asterisk">*</sup>
</label>
<input type="text" name="lastName" id="lastName" maxlength="40" tabindex="9">
</div>
</div>
代码如下:
public void enterFirstName(String name) {
wait.until(ExpectedConditions.visibilityOf(enterfirstName));
enterfirstName.sendKeys(name);
}
所以当我编写上面的代码片段时,它会抛出空点异常 当我删除它的可见性时,找不到这样的元素。
最佳答案
它不会工作,你是说 - “当我点击第一页上的链接打开新页面时。但是,当我尝试使用新页面上的元素时,我得到的只是 NullPointException 或 NoSuchElementException。 ”所以您仍在尝试使用旧页面上的元素。您需要先打开新打开的选项卡,然后尝试单击您的元素。 像这样的东西:
ArrayList<String> tabs = new ArrayList<String> (driver.getWindowHandles());
driver.switchTo().window(tabs.get(1));
关于java - 无法使用 Selenium 中的任何定位器定位任何元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57187845/