Java Selenium WebDriver 找不到表单字段

Java Selenium WebDriver Can't find form field

提问人:Taylor Gagne 提问时间:1/11/2016 最后编辑:Taylor Gagne 更新时间:8/12/2017 访问量:2011

问:

我正在测试一个注册页面,我尝试了 name、xpath、id、class,但似乎没有任何效果。

这是我的 Selenium 代码

  driver.findElement(By.id("pushMenu")).click();
    Thread.sleep(2000);
    driver.findElement(By.linkText("Register")).click();
    Thread.sleep(2000);
    WebElement l = driver.findElement(By.name("name"));

这是我尝试访问的表单标签

<input type="text" name="name" placeholder="">

显式等待尝试代码:

 WebDriverWait wait = new WebDriverWait(driver, 10);
    WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.name("name")));
    driver.findElement(By.name("name")).sendKeys("Testing100");
java selenium xpath selenium-webdriver chrome-web-driver

评论

0赞 Paras 1/11/2016
你能分享你的错误堆栈跟踪吗?
0赞 Taylor Gagne 1/11/2016
org.openqa.selenium.NoSuchElementException:没有这样的元素:无法找到元素:{“method”:“name”,“selector”:“name”}
0赞 Paras 1/11/2016
你试过显式等待吗?
0赞 Taylor Gagne 1/11/2016
不,我没有尝试过
0赞 Shoaib Mal 1/11/2016
检查它是否在 iframe 中,因为您的定位器似乎是正确的,它不应该抛出 NoSuchElementException。

答:

0赞 Nipun Kumar 1/11/2016 #1

在 HTML u 共享中,没有名称标签。 所以试试 by.linktext(“Manager”)

评论

0赞 Nipun Kumar 1/11/2016
尝试使用 Sleenium iDe。它建议什么定位器值。还要检查寄存器表单的 HTML 是否属于某些 iframe,如果是,则需要处理它
0赞 Nitin Subramanya 1/12/2016 #2

请检查等待中指定的时间是否足以使元素完全加载。
或者
使用不同的定位器,例如名称、id(如果存在)不起作用。
cssSelector

CssSelector example
driver.findElement(By.cssSelector(input[name='name']));
0赞 sarjit07 1/12/2016 #3

要访问表单字段,请使用

driver.findElement(By.xpath(“//input[@name='name']”));

0赞 Sanchita Mukherjee 1/14/2016 #4

如果您在隐式/显式等待后仍然面临访问元素的问题,请尝试在访问该元素之前放置屏幕截图,并查看该元素是否存在于页面上。