Я пытаюсь нажать на ссылку, которая генерируется динамически и, кажется, выполняет некоторые Javascript. Я попытался использовать методы onclick и JavaScripExecutor, но я не могу найти элемент на странице. Фрагмент кода, который я работаю с заключается в следующем:Нажмите на динамическую ссылку с Selenium
<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);
Я думаю, что (а) и (б) не потому что часть имени JS динамически генерируется, и я не могу положиться на это. Я был бы очень благодарен за помощь. Благодарю.
Как пробовать ту же операцию над родителем тега 'a' вместо тега 'a'. Ничего плохого в том, что вы пытались использовать, Просто динамически загружающий контент делает проблему более худшей. Позволяет включить тот же путь с родительским тегом, и он должен работать. –
Если вы отправляете HTML-код, запустите его с помощью такого средства, как http://jsbeautifier.org/. Это облегчает чтение. Благодаря! – JeffC