Java Selenium WebDriver无法找到表单字段。

3

我正在测试一个注册页面,尝试了名称、xpath、id、类等多种方式,但似乎都不起作用。

以下是我的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");

你能分享一下你的错误堆栈跟踪吗? - Paras
org.openqa.selenium.NoSuchElementException: 没有这样的元素:无法定位元素:{"method":"name","selector":"name"} - Taylor Gagne
检查是否在 iframe 中,因为您的定位器似乎正确,不应该引发 NoSuchElementException。 - Shoaib Mal
我是新手使用selenium。 - Taylor Gagne
尝试在公共URL上复制此操作,这应该很容易解决。 - Mrunal Gosar
显示剩余4条评论
4个回答

0

在你分享的HTML中没有name标签。 所以尝试使用.by_link_text("Manager")


尝试使用Selenium iDe。它建议哪个定位器值?还要检查注册表单的HTML是否在某个iframe中,如果是,则需要处理。 - Nipun Kumar

0

访问表单字段,使用

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


0

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


0
请确保wait语句中指定的时间足够元素完全加载。
或者
如果名称、id(如果存在)无法使用,请使用不同的定位器,如cssSelector
CssSelector example
driver.findElement(By.cssSelector(input[name='name']));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接