【问题标题】:Java Selenium WebDriver Can't find form fieldJava Selenium WebDriver找不到表单字段
【发布时间】:2016-04-15 20:12:52
【问题描述】:

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

这是我的硒代码

  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");

【问题讨论】:

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

标签: java selenium xpath selenium-webdriver chrome-web-driver


【解决方案1】:

在你共享的 HTML 中没有名称标签。 所以试试 by.linktext("Manager")

【讨论】:

  • 尝试使用 Sleenium iDe。它建议什么定位器值。还要检查注册表单的 HTML 是否在某些 iframe 中,如果是,那么你需要处理它
【解决方案2】:

请检查等待中指定的时间是否足以让元素完全加载。

如果名称、id(如果存在)不起作用,请使用不同的定位器,例如 cssSelector

CssSelector example
driver.findElement(By.cssSelector(input[name='name']));

【讨论】:

    【解决方案3】:

    要访问表单域,请使用

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-04-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-11
        • 2012-08-05
        相关资源
        最近更新 更多