java Selenium无法找到HTML上存在的元素

cwtwac6a  于 2023-06-28  发布在  Java
关注(0)|答案(1)|浏览(108)

1.我可以手动检查并获取元素的xpath。
1.当我得到那个元素的xpath时,它说1的1。我可以为元素创建一个唯一的Xpath。
1.但 selenium 却找不到它。
我在用Waits因此,不存在跳过元素的问题。但是,HTML中也没有任何iframe。 selenium 仍然无法找到我创建Xpath的元素。我提供了该问题的屏幕截图。

这是代码:

webEssentials.waitTillElementIsAvailableInDOM(By.xpath("//select[@name='senderId']"));
webEssentials.waitTillElementIsClickable(selectSenderId);
WebElement element = webEssentials.driver.findElement(By.xpath("//select[@name='senderId']"));
        Select select = new Select(element);
        select.selectByIndex(0);

        webEssentials.waitTillElementIsVisible(templateZoho).
                waitTillElementIsClickable(templateZoho);
        WebElement element1 = webEssentials.driver.findElement(By.xpath("//select[@name='template']"));
        Select select1 = new Select(element1);
        select1.selectByIndex(0);

[1]:https://drive.google.com/drive/folders/1rvqESd2SE4cUqGyY7FK-8brI_q_F-6am?usp=sharing这个链接有我在 selenium 找不到元素后得到的错误日志

1tuwyuhd

1tuwyuhd1#

所需的元素是Angular元素。要从html-select标记中选择一个select-options,您需要诱导WebDriverWait for the elementToBeClickable(),您可以使用以下定位器策略之一:

  • 使用 name
WebElement element = new Select(new WebDriverWait(webEssentials.driver, Duration.ofSeconds(10)).until(ExpectedConditions.elementToBeClickable(By.name("senderId"))));
  • 使用 cssSelector
WebElement element = new Select(new WebDriverWait(webEssentials.driver, Duration.ofSeconds(10)).until(ExpectedConditions.elementToBeClickable(By.cssSelector("select[name='senderId']"))));
  • 使用 xpath
WebElement element = new Select(new WebDriverWait(webEssentials.driver, Duration.ofSeconds(10)).until(ExpectedConditions.elementToBeClickable(By.xpath("//select[@name='senderId']"))));

参考资料

您可以在以下内容中找到一些相关的详细讨论:

  • 如何通过Selenium WebDriver从下拉列表中选择选项
  • 尝试从Selenium web automation -error-“ElementNotInteractableException:无法滚动到视图”
  • 如何使用Selenium从选择下拉列表中检索选项的值?

相关问题