org.openqa.selenium.NoSuchElementException找不到文本框元素。

时间:2017-01-03 19:33:33

标签: selenium-webdriver

我搜索了堆栈溢出,虽然有“org.openqa.selenium.NoSuchElementException:无法找到元素”的答案,但它们似乎不适合我的情况。我是编码和使用硒的新手。所以你能提供的任何帮助都会很棒。先感谢您。

当我找到一个用户名文本框的元素时,我收到此错误。

当我用火道检查元素时,我得到以下内容;

input id="txt_658_4692" class="form-control ggo-field" required="1" data-bv-notempty-message="The field is required." data-bv-stringlength-message="255 characters to be removed." data-fv-stringlength="true" maxlength="255" data-ggo-maxlength="255" name="txt_658_4692" data-ggo-fieldtype="TEXT" data-ggo-fieldidentifier="APPLICANT_USERNAME" data-ggo-token="de6cbe2fe346a847ab301bd6147c0374" value="" type="text"/

所以在那个疯狂的字符串的某个地方应该是我可以定位的元素,然后发送密钥登录。

我尝试过使用

driver.findElement(By.Id())
driver.findElement(By.xpath())
driver.findElement(By.cssSelector())
driver.findElement(By.name())

这是我在

上收到错误的代码部分
WebElement usernameTextbox = driver.findElement(By.xpath(".//*[@id='txt_658_4692']"));
    usernameTextbox.sendKeys("russelltest1");

任何帮助或建议都会很棒。

谢谢。

2 个答案:

答案 0 :(得分:1)

当webdriver无法在DOM中找到元素时,抛出NoSuchElementException。我假设您的文本框元素id可能会动态更改,因此此xpath查询无法选择它,因为它不再存在。 尝试使用不同的xpath选择器,例如:

driver.findElement(By.xpath(".//*[data-ggo-fieldidentifier='APPLICANT_USERNAME']"));

看看它是否有帮助。

答案 1 :(得分:0)

您还可以使用标签文本标识文本框。例如,如果您的用户名字段标签的文字属性为用户:,则可以使用以下xpath找到文本框:

//label[text()='User:']/following::input[1]

//*[text()='User:']/following::input[1]

如果它不适合您,请分享页面的完整HTML,以便我可以告诉您所需文本框的确切路径。