Selenium JAVA: щелчок по элементу в меню без идентификатора

#selenium-webdriver

#selenium-webdriver

Вопрос:

Я занят использованием Selenium в отчетах SSRS. Я борюсь с определенным элементом в меню, с которым я не могу взаимодействовать

Вот фрагмент html.

 </div><div class="DisabledButton">
<a title="Excel" class="ActiveLink"      onclick="$find('ctl31').exportReport('EXCEL');" href="javascript:void(0)" style="padding: 3px 8px 3px 32px; display: block; white-space: nowrap; text-decoration: none;">Excel</a>
</div>
  

Я попытался использовать следующее, чтобы найти элемент:
* Использование getcssSelector
* Использование linkText

Есть ли решение для этого?

Комментарии:

1. Пробовал Xpath. Путь xpath, который я получаю при копировании, приведен ниже: //*[@id=»ctl31_ctl05_ctl04_ctl00_Menu»]/div[5]/a . Перед добавлением его в параметр я избежал кавычек, что изменило xpath на приведенный ниже driver.findElement(By.xpath(«//*[@id=»ctl31_ctl05_ctl04_ctl00_Menu»] / div[5] /a»)).click(); К сожалению, это такне выдает мне ошибку, но также ничего не делает. Спасибо за помощь до сих пор

2. Что происходит при использовании By.LinkText("Excel") ? Пожалуйста, опубликуйте код, который вы пробовали, и каков был результат … сообщение об ошибке и т. Д.

3. Есть ли какие-либо исключения при вашей попытке??

Ответ №1:

Шаги по получению xpath из chrome:

  1. Щелкните правой кнопкой мыши по элементу на веб-странице и нажмите проверить
  2. HTML для элемента должен быть выделен
  3. Щелкните правой кнопкой мыши на выделенном разделе
  4. Наведите курсор мыши на «копировать»
  5. Нажмите Копировать xpath

Затем, чтобы найти элемент, используйте:

 WebElement element = driver.findElement(By.xpath("Paste Xpath here"));
  

Чтобы щелкнуть по нему, затем:

 element.click();
  

Комментарии:

1. Xpath, который я получаю, приведен ниже. //* [@id=»ctl31_ctl05_ctl04_ctl00_Menu»]/ div[5]/a, который, к сожалению, не работает

2. Вам нужно удалить двойные кавычки в xpath и заменить их одинарными кавычками — //*[@id= ‘ctl31_ctl05_ctl04_ctl00_Menu’]/div[5]/a

3. Ошибки не выдает, но и ничего не делает. Я использовал element.getText(); чтобы подтвердить правильность элемента. Метка печатается правильно. Поэтому я считаю, что элемент правильный, но он не хочет нажимать на него.

4. попробуйте: element.SendKeys(«»); element.click();

5. element.SendKeys(«»); element.click(); отлично сработал!