2014-01-23 2 views
0

В моем коде при поиске элемента через ID он щелкает другим элементом. Как я могу найти точный элемент и нужно щелкнуть то же самое. Я использую Selenium WebDriver с java.Как щелкнуть точный элемент, найдя идентификаторы в Selenium WebDriver?

Log.info("Clicking on Overview and Evolution PR link"); 
driver.findElement(By.id("ext-pr-backlog-evolution")).click(); 
WebDriverWait wait = new WebDriverWait(driver, 10); 
wait.until(ExpectedConditions.elementToBeClickable(By.id("ext-pr-backlog-evolution"))); 

enter image description here

Я пытаюсь нажать Обзор & Evolution вкладки но нажав Среднего времени Назначения Вкладки

Всего HTML следующим образом:

<li> 
    <a id="ext-pr" class="submenu ext-pr" name="ext-pr" href="https://10.4.16.159/reports/">Problem Reports (PR)</a> 
    <ul> 
     <li> 
      <a id="ext-pr-backlog-age" class=" ext-pr-backlog-age" name="ext-pr-backlog-age" href="https://10.4.16.159/extranet_prbacklogage/reports/type/default/">Age</a> 
     </li> 
     <li> 
      <a id="ext-timetoassign-prs" class=" ext-timetoassign-prs" name="ext-timetoassign-prs" href="https://10.4.16.159/extranet_timetoassignprs/reports/type/default/">Average Time To Assign</a> 
     </li> 
     <li> 
      <a id="ext-timetodeliver-prs" class=" ext-timetodeliver-prs" name="ext-timetodeliver-prs" href="https://10.4.16.159/extranet_timetodeliverprs/reports/type/default/">Average Time To Deliver</a> 
     </li> 
     <li> 
      <a id="ext-timetoresolve-prs" class=" ext-timetoresolve-prs" name="ext-timetoresolve-prs" href="https://10.4.16.159/extranet_timetoresolveprs/reports/type/default/">Average Time To Resolve</a> 
     </li> 
     <li> 
      <a id="ext-new-prs" class=" ext-new-prs" name="ext-new-prs" href="https://10.4.16.159/extranet_newprs/reports/type/default/">New</a> 
     </li> 
     <li> 
      <a id="ext-open-prs" class=" ext-open-prs" name="ext-open-prs" href="https://10.4.16.159/extranet_openprs/reports/">Open</a> 
     </li> 
     <li> 
      <a id="ext-pr-backlog-evolution" class=" ext-pr-backlog-evolution" name="ext-pr-backlog-evolution" href="https://10.4.16.159/extranet_prbacklogevolutiontendency/reports/type/default/">Overview & Evolution</a> 
     </li> 
     <li> 
      <a id="ext-pr-domain" class=" ext-pr-domain" name="ext-pr-domain" href="https://10.4.16.159/extranet_prperdomain/reports/">Per Prod/SW Pack/RDT Group</a> 
     </li> 
     <li> 
      <a id="ext-pr-tendency" class=" ext-pr-tendency" name="ext-pr-tendency" href="https://10.4.16.159/extranet_prtendency/reports/type/default/">Progression</a> 
     </li> 
     <li> 
      <a id="ext-rework-prs" class=" ext-rework-prs" name="ext-rework-prs" href="https://10.4.16.159/extranet_reworkprs/reports/type/default/">Rework</a> 
     </li> 
     <li> 
      <a id="ext-pr-timetosolveprs" class=" ext-pr-timetosolveprs" name="ext-pr-timetosolveprs" href="https://10.4.16.159/extranet_timetosolveprs/reports/type/default/">Time To Solve</a> 
     </li> 
    </ul> 
</li> 

Пожалуйста, найдите soltio п. как раз щелкните элемент ..

ответ

2

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

Теперь вы можете изменить свой локатор и щелкнуть по ним. Применяйте один из локаторов и один из методов щелчка каждый раз, у вас должно быть не менее 7 * 3 = 21 попытки.

код Основание:

WebDriverWait wait = new WebDriverWait(driver, 10); 
wait.until(ExpectedConditions.elementToBeClickable(By.id("ext-pr-backlog-evolution"))); 
driver.findElement(By.id("ext-pr-backlog-evolution")).click(); 

Различные локаторы:

By.id("ext-pr-backlog-evolution") // current, not working 
By.cssSelector("#ext-pr-backlog-evolution") 
By.cssSelector(".ext-pr-backlog-evolution") 
By.cssSelector("href[*='extranet_prbacklogevolutiontendency/reports']") 
By.xpath(".//a[@id='ext-pr-backlog-evolution']") 
By.cssSelector(".//a[contains(@class, 'ext-pr-backlog-evolution')]") 
By.cssSelector(".//a[contains(@href, 'extranet_prbacklogevolutiontendency/reports')]") 

Различные методы кликов:

Normal нажмите

driver.findElement(one_of_the_locators_above).click();` 

Действия нажмите

new Actions(driver).click(driver.findElement(one_of_the_locators_above)).perform(); 

JavaScript нажмите

JavascriptExecutor executor = (JavascriptExecutor)driver; 
executor.executeScript("arguments[0].click();", driver.findElement(one_of_the_locators_above)); 
+0

Я следил за тем, как вы упомянули, но там также отображается та же ошибка. – Amirdha

+0

Я разместил весь HTML. Пожалуйста, предложите мне любое решение – Amirdha

0

С id является уникальным, вам просто нужно использовать:

$('#ext-pr-backlog-evolution').click(function() { 
    // Your code here 
}); 
+1

Я не downvote это, но это совершенно неверно. Контекст здесь - Селен. Я не уменьшаю его, потому что OP фактически помещает в тег jQuery (так что это не ваша вина) - который я сейчас удалил. – Arran

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