几天前我遇到了类似的问题,我在我的特殊情况下找到了解决方案。===使用 Selenium Webdriver,我想单击“第一个链接”的链接,这将在页面上加载内容。
下面是结构与我的情况类似的部分代码:
<li class="first-link">
<a class="common-style" href="javascript:;" style="padding-left: 15px; padding-right: 15px;">First Link</a>
</li>
===结果是应该找到并单击 Web 元素,但切换到 UI,没有发生任何事情,也没有引发错误(未找到元素,元素未准备好单击,元素禁用等)。
在尝试了几种不同的方法通过(xpath和css,没有尝试通过id尝试,因为在我的情况下没有唯一的id)之后,我能够通过css访问并单击带有Selenium webdriver的元素,具有以下值: li.first-link a
. 但是,当我尝试使用以下值通过 xpath 访问时,这是在 Firefox 中“找到”但单击没有工作:.//li[a/text()='First Link']
。
问题是一个轻微的 xpath 语法问题,来自 Firefox 的萤火虫根本没有报告,实际上它找到了链接。
我像这样更改了大括号顺序:.//li/a[text()='First Link']
现在它按预期工作,找到并单击了第一个链接,并触发了加载页面的 javascript 代码。
我的发现是: * 这不是时间问题,因此不会发生这种情况,因为您尝试单击未准备好的元素。否则我们已经通过明确的 Selenium 等待解决了这个问题......
解决方案建议:验证您的 html 结构,您的 xpath,尝试查找语法问题,找到访问元素的不同方法。