java - 如何通过Selenium和WebDriverWait等待元素包含特定属性?

标签 java selenium selenium-webdriver xpath webdriverwait

我有一个关于 Selenium 的问题,是否有人可以帮忙。我需要进入一个 URL 页面,该页面上的节点最初处于“已注册”状态,X 秒后,其状态将动态更改为“就绪”状态。在其状态转变为“就绪”状态之前,我可能会在 selenium 执行期间继续执行后续步骤。 这是初始代码的html代码,

<div class="icon-holder pull-left" action = "select-device" sn="FX0071234" status = "in_stock">
   <i class = "...">...</i>
   <div class="model-holder">
       <span class="model-registered">200K</span>
   </div>
   <div class="active-holder">...</div>
</div>

这是 X 秒后更新的 html 代码,

<div class="icon-holder pull-left" action = "select-device" sn="FX0071234" status = "discovered">
   <i class = "...">...</i>
   <div class="model-holder">
       <span class="model-ready">200K</span>
   </div>
   <div class="active-holder">...</div>
</div>

我想新建一个 WebDriverWait() Obj 来等待更改发生。这是我的代码:

new WebDriverWait(driver, 50).until(ExpectedConditions.attributeContains(
                By.xpath("//span[@class = 'model-registered' and text() = '200K']"), "class", "model-ready"));

但是在我的selenium运行时,这段代码永远不会工作,它立即存在。有什么想法可能是错的吗?提前致谢。

最佳答案

要等待元素更改为就绪状态,您需要引发WebDriverWait,并且可以使用以下解决方案:

boolean status = new WebDriverWait(driver, 20).until(ExpectedConditions.attributeContains(By.xpath("//div[@class='model-holder']/span[contains(.,'200K')]"), "class", "model-ready"));

关于java - 如何通过Selenium和WebDriverWait等待元素包含特定属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51257286/

相关文章:

java - Selenium Webdriver - 无法找到元素

java - Selenium findElements() 多次返回第一个元素的同一实例

python - 在 Selenium/Python 中循环遍历 div 中的 div

java - "Next"Button in Javascript & used JavascriptExecutor to click on "next"button 但它没有帮助我

java - 如何将 User 对象放入 UsernamePasswordAuthenticationToken(AuthenticationProvider) 中?

java - 嵌套for循环的大O

r - 在 RSelenium 中打开新选项卡

java - android.os.StrictMode 实例=2;限制=1

java - 为什么post请求会出现禁止错误?

html - 如何通过 XPath 选择相邻元素?