如何在 Selenium Webdriver 中从 div 中查找具有 2 个属性(输入和按钮)的元素?

问题描述 投票:0回答:1
java selenium-webdriver intellij-idea automation
1个回答
0
投票

我有几个建议:

  1. 检查浏览器开发工具中的 CSS 选择器,确保它在该页面上是唯一的。

    在浏览器中打开该页面,打开开发工具(通常是 F12),然后尝试

    $$("#buildingYear input")
    运行 CSS 选择器。注意:您可以使用
    $x(locator)
    来测试 XPath。它返回的元素是否超过 1 个?我猜它会返回多个,也许它返回的第一个是在页面的移动版本中,等等,所以它不可见,即不可交互。如果是这种情况,请尝试找到可用于分隔页面的两个(或更多)版本的父元素,例如某些页面具有高级 DIV 等,其中 id='mobile' 与 id='desktop' 或类似内容。然后您可以将定位器更改为“#desktop #buildingYear input”。

  2. 使用

    ExpectedConditions.visibilityOfElementLocated()
    代替
    ExpectedConditions.presenceOfElementLocated()

    存在意味着该元素存在于 DOM 中,但并不意味着它是可见的并且可以与之交互。如果页面完成加载的速度有点慢,假设您的 CSS 选择器定位器在页面上是唯一的,这可能会解决问题(问题 #1)。

    如果您需要查找某个元素但它不需要可见,请使用存在状态。如果您打算与其交互(从中获取文本等),请使用可见。如果您要单击它,请使用可单击的。

© www.soinside.com 2019 - 2024. All rights reserved.