单击Selenium的动态链接

Click on a dynamic link with Selenium

本文关键字:链接 动态 Selenium 单击      更新时间:2023-09-26

我试图点击一个动态生成的链接,似乎执行一些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();