我有几个建议:
检查浏览器开发工具中的 CSS 选择器,确保它在该页面上是唯一的。
在浏览器中打开该页面,打开开发工具(通常是 F12),然后尝试
$$("#buildingYear input")
运行 CSS 选择器。注意:您可以使用 $x(locator)
来测试 XPath。它返回的元素是否超过 1 个?我猜它会返回多个,也许它返回的第一个是在页面的移动版本中,等等,所以它不可见,即不可交互。如果是这种情况,请尝试找到可用于分隔页面的两个(或更多)版本的父元素,例如某些页面具有高级 DIV 等,其中 id='mobile' 与 id='desktop' 或类似内容。然后您可以将定位器更改为“#desktop #buildingYear input”。
使用
ExpectedConditions.visibilityOfElementLocated()
代替 ExpectedConditions.presenceOfElementLocated()
。
存在意味着该元素存在于 DOM 中,但并不意味着它是可见的并且可以与之交互。如果页面完成加载的速度有点慢,假设您的 CSS 选择器定位器在页面上是唯一的,这可能会解决问题(问题 #1)。
如果您需要查找某个元素但它不需要可见,请使用存在状态。如果您打算与其交互(从中获取文本等),请使用可见。如果您要单击它,请使用可单击的。