javascript - 单击带有 Selenium 的动态链接

标签 javascript java selenium selenium-webdriver automation

我正在尝试单击动态生成的链接,并且似乎执行一些 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/

相关文章:

javascript - 在sails.js 中停止模式的自动迁移

javascript - 自定义 Jasmine Matcher 中已解决和已拒绝的 promise

javascript - 如何获取没有元素id的元素?

java - Unresolved 编译问题 :Twitter cannot be resolved to a type

java - 在加载之前将属性传递给 log4j

java - 为什么哈希集解决方案被接受,而使用 HashMap 却出现超时错误-在数组中查找具有差异 K 的对?

python - 使用 selenium webdriver python 上传文件

javascript - jQuery 获取 anchor 值

Selenium CSS 定位器定位器中的空间

python - 用于 Selenium Scraping 的 Mozilla Firefox 命令行安装