如何使用 selenium webdriver 查找动态元素?

Posted

技术标签:

【中文标题】如何使用 selenium webdriver 查找动态元素?【英文标题】:How to find a dynamic elements using selenium webdriver? 【发布时间】:2020-05-18 11:04:19 【问题描述】:
<div id="button" data-testid="widgetButton" class=" chat-closed mobile-size__large">

我的元素带有 Webdriver 无法找到的特殊字符。

我正在尝试单击一个项目,我已经尝试了所有方法。 我的最后一次尝试:

wd.get(urlSubpage);
        wd.findElement(By.cssSelector("[class='widgetLabel']"));

【问题讨论】:

尝试使用 ChroPath 之类的东西进行部分调试... 您要查找哪个元素? html中没有widgetLabel类。 @Muzzamil 我想找到 【参考方案1】:

您可以在id 的帮助下使用 webdriver 等到元素能够接收到点击。

WebDriverWait wait = new WebDriverWait(driver, 50);

wait.until(ExpectedConditions.elementToBeClickable(By.id("button-body")));

用JS点击

WebElement element = driver.findElement(By.id("button-body"));
javascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element);

【讨论】:

我加了但是Caused by: org.openqa.selenium.NoSuchElementException: Unable to locate element: #button\-body @Nirwellyn 请尝试点击答案中提到的 JS。复制粘贴代码并尝试。删除点击前的等待元素

以上是关于如何使用 selenium webdriver 查找动态元素?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Java 在 selenium webdriver 中打开新选项卡,或者如何使用 selenium webdriver 使用动作类在 selenium 中按 ctrl + T [重复]

如何使用selenium webdriver来判断一个网页加载完毕

Selenium & webdriver.io 如何使用 executeScript?

如何使用selenium webdriver来判断一个网页加载完毕

如何使用 C# 在 Selenium WebDriver (Selenium 2) 中最大化浏览器窗口?

如何在 ruby​​ 中使用 Selenium WebDriver (selenium 2.0) 客户端设置选项