我正在尝试单击动态生成的链接,并且似乎执行一些 JavaScript。我尝试使用“onclick”和 JavaScripExecutor 方法,但无法在页面中找到该元素。我正在使用的代码片段如下:
<a class="a68a" target="_top" style="cursor:pointer;" href="" onkeypress="if(event.keyCode == 13 || event.which == 13){ClientReportc2b21bbce37e4f5ba98575a2680610a2.ActionHandler('Drillthrough','64iT0R0x0:0');}return false;" onclick="ClientReportc2b21bbce37e4f5ba98575a2680610a2.ActionHandler('Drillthrough','64iT0R0x0:0');return false;" tabindex="1">
<div class="r13" style="WIDTH:17.42mm;">
<div class="a67"> <span class="a66">123456789</span> </div>
</div>
</a>
我尝试了很多不同的方法,但都没有效果:
(a) driver.findElement(By.linkText("ClientReport8522bb9804044e969553e386b7010c6d.ActionHandler('Drillthrough','64iT0R0x0:0')")).click();
(b) driver.findElement(By.xpath("//a[@onclick='ClientReport8522bb9804044e969553e386b7010c6d.ActionHandler('Drillthrough','64iT0R0x0:0')']")).click();
(c) WebElement element = driver.findElement(By.xpath("//a[@class='a68a']"));
element.click();
(d) WebElement element= driver.findElement(By.xpath("//a[@class='a68a']"));
JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].click();", element);
我认为(a)和(b)失败,因为部分 JS 名称是动态生成的,我不能依赖它。如果您能提供一些帮助,我将不胜感激。谢谢。
最佳答案
如果该元素是动态生成的,那么您可能应该等待该元素首先出现,然后单击它。尝试下面的代码看看是否有帮助 -
driver.wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//a[@class='a68a']"))).click();
希望这有帮助。
关于javascript - 单击带有 Selenium 的动态链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32519011/