2015-09-11 2 views
0

Я пытаюсь нажать на ссылку, которая генерируется динамически и, кажется, выполняет некоторые 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 динамически генерируется, и я не могу положиться на это. Я был бы очень благодарен за помощь. Благодарю.

+1

Как пробовать ту же операцию над родителем тега 'a' вместо тега 'a'. Ничего плохого в том, что вы пытались использовать, Просто динамически загружающий контент делает проблему более худшей. Позволяет включить тот же путь с родительским тегом, и он должен работать. –

+0

Если вы отправляете HTML-код, запустите его с помощью такого средства, как http://jsbeautifier.org/. Это облегчает чтение. Благодаря! – JeffC

ответ

1

Если элемент динамически сгенерирован, вы должны, вероятно, ожидать, пока элемент появится первым, а затем нажмите на него. Попробуйте ввести код, чтобы узнать, не поможет ли он -

driver.wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//a[@class='a68a']"))).click(); 

Надеюсь, это поможет.

Смежные вопросы