РЕШАЕМАЯ: Select by linktext не работает, перепробовал все

#java #selenium #selenium-webdriver

#java #селен #selenium-webdriver

Вопрос:

Его всплывающее окно наложения div выглядит следующим образом:

<div class="tutorial-button tutorial-button-ok tt-close">Later</div>

исходный код выглядит так:

<a class="match-button match-button-close" href="javascript:void(0);" onclick="matchingLayerClose();">
<i class="material-icons match-button-icon">close</i> Later
</a>

Я хотел бы найти элемент либо по cssSelector, className, либо по тексту ссылки «Позже», не имеет значения

Я пытался:

By.className("tutorial-button tutorial-button-ok tt-close");

By.cssSelector("div[class='tutorial-button tutorial-button-ok tt-close']");

By.xpath("//*[contains(text(), 'Later')]"))

By.xpath("//a[contains(.,'Later')]"))

который отлично работает с другими элементами. пожалуйста, помогите

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

1. Не могли бы вы, пожалуйста, прояснить свой вопрос немного подробнее?

2. Вам нужно более конкретно объяснить, что означает «не работает». Вам нужно отредактировать свой вопрос и добавить сообщения об ошибках / исключениях для каждой попытки. Я могу сказать вам, что первый, By.className() , не будет работать, потому что вы вводите 3 имени класса, когда можете использовать только 1. Второй вариант не очень похож на CSS… так и должно быть div.tutorial-button.tutorial-button-ok.tt-close . Третий, вероятно, не сработал, потому что есть несколько элементов, которые соответствуют этому локатору. 4-й, вероятно, не сработал, потому что в теге есть другие вещи A , которые мешают contains() .

3. Попробуйте By.xpath("//div[.='Later']") или, может By.xpath("//div[contains(.,'Later')]") быть. Если они не работают, это, вероятно, внутри IFRAME . После того, как вы все это изучили, отредактируйте свой вопрос и добавьте результаты.

4. Спасибо, что поделились своими знаниями! Особенно @JeffC за то, что прояснил ситуацию. для меня это довольно ново.

5. By.xpath("//*[contains(text(), 'Later')]" в конце концов, я просто обернул его в условный. теперь я чувствую себя глупо

Ответ №1:

Вы можете попробовать селектор CSS, например

 div.tutorial-button.tutorial-button-ok.tt-close
  

или XPath, подобный

 //div[.='Later']
//div[contains(.,'Later')]