我在尝试使用Selenium WebDriver单击超链接时遇到了一个问题。我尝试使用CssSelector和XPath,但似乎都不起作用。我想做的就是点击谷歌文本。
<div class="hello">
<div class="test">
<table class="first first-table">
<tbody>
<tr>
<td class="second-table">
<a id="dummyID" href="https://www.google.com" target="_blank">Google</a>
</td>
</tr>
</tbody>
</table>`
提出的解决方案没有一个每次都能奏效。超链接不能像其他可单击的web元素(如按钮)一样处理。通过从锚标记中删除href
属性,可以禁用超链接。对于其他组件,web驱动程序可以询问找到的web元素,以查看是否已启用或可单击。请考虑以下场景:
<a id="dummyID" target="_blank">Google</a>
WebElement element = new WebDriverWait(driver, 1).until(ExpectedConditions.elementToBeClickable(By.xpath("//a[text()='Google']")));
element.click();
因为expectedconditions
类不能像对待输入元素(如button)那样确定链接的“可单击性”,所以它不会抛出TimeoutException
并允许您的测试单击一个死的(禁用的)链接。因此,对于独占的超链接,您必须搜索带有href
属性的锚标记,或者测试单击的结果(即URL的更改)。
您应该尽量避免的另一件事是使用//*
定位web元素。您可能会遇到这样的情况:将找到多个元素,而您最终将与不正确的元素交互。
最后,driver.findElement(...)
的问题是,如果页面没有完全加载(除非设置某种隐式等待),您可能会遇到nosuchelement
异常的问题。等待元素与之交互的首选方式是使用显式等待,如我上面提供的Java示例。由于我不知道你遇到了什么问题,我不得不假设这可能是你的问题。如果这不是问题所在,可能元素在iframe
中,在这种情况下,您需要告诉web驱动程序在与元素交互之前切换到正确的iframe
。
问题内容: 是否可以在不使用JavaScript的情况下单击超链接来调用Java Servlet? 问题答案: 使超链接具有您在文件中为其定义的servlet映射的URL 。 所述元件限定了servlet和URL模式之间的映射。下面的示例将servlet映射到以开头的任何URL : 在此示例中,诸如的超链接将调用servlet。
问题内容: 今天,我正在尝试测试一个可在Google主页(www.google.co.in)上使用的gmail链接。我能够启动fierfox窗口,并且能够执行将我带到Google主页的第一步,但是在此之后什么都没有发生,我也没有遇到任何运行时错误或日食异常。不知道webdriver发生了什么。我遇到了我已经在stakwave上发布的另一个程序的问题,因此,如果可以,请查看此链接- 为什么我的测试抛
问题内容: 在机械化中,我们可以使用follow_link或click_link单击链接。在美丽的汤中是否有类似的事情可以单击网页上的链接? 问题答案: 是HTML 解析器 。 进一步的讨论实际上取决于您所处的具体情况以及特定网页的复杂性。 如果您需要与网页进行交互:提交表单,单击按钮,滚动等-您需要使用利用真实浏览器的工具,例如。 例如,在某些情况下,如果提交表单时不涉及任何javascript
我有一个html链接
Iam测试了以下网页:http://www.guiadosliflrinhos.com/todas-capas-disponiveis 我需要在分页信息页导航喜爱。我需要点击链接javascript下一页: JavaScript:__doPostback('CTL00$MainContent$LSTProfileview$DataPagerNumeric2$CTL02$CTL00') 我的代码返回
我的目标是使用selenium python来点击这个超链接元素,下面是我尝试过的3个解决方案,没有一个有效。 解决方案1: 错误消息:selenium.common.exceptions.javascriptException:消息:javascript错误:无法读取未定义的属性“click” 那么,每个解决方案都出了什么问题呢?我怎么才能让它起作用?