我搜索了堆栈溢出,虽然有“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");
任何帮助或建议都会很棒。
谢谢。
答案 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,以便我可以告诉您所需文本框的确切路径。