Как написать XPath для текста one4 - PullRequest
0 голосов
/ 23 января 2019

Я хочу использовать XPath для нахождения ссылки за текстом.

Я хочу использовать XPath для нахождения ссылки за текстом.Например, найдите «one4» по «what10».Вы можете использовать только текстовое сообщение «what10», но не можете использовать его любым другим способом, потому что информация на этой странице изменится.Я хочу получить это узел ссылки "one4".

<body>
<p>
<a href="/dy/dy5.jsp?funid=50">so</a>
<br>what1 <a href="/dy/dy5.jsp?funid=34+">one</a>
<br>what2<a href="/dy/dy5.jsp?funid=35+">two</a>
<br>what11<a href="/dy/dy5.jsp?funid=43+">one4</a>
<br>what3<a href="/dy/dy5.jsp?funid=36+">three</a>
<br>what4<a href="/dy/dy5.jsp?funid=37+">one1</a>
<br>what5<a href="/dy/dy5.jsp?funid=38+">two2</a>
<br>what6<a href="/dy/dy5.jsp?funid=39+">three3</a>
<br>what7<a href="/dy/dy5.jsp?funid=40+">one3</a>
<br>what8<a href="/dy/dy5.jsp?funid=41+">two3</a>
<br>what9<a href="/dy/dy5.jsp?funid=42+">three3</a>
<br>what10<a href="/dy/dy5.jsp?funid=43+">one4</a>
<br><a href="/dy/dy5.jsp?funid=44+">just return</a>
<br></p>
</body>

По некоторым особым причинам я хочу передать, что текст what10 расположен в one4.

Пожалуйста, помогитея.

Ответы [ 2 ]

0 голосов
/ 23 января 2019

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

WebElement loginLink = driver.findElement(By.linkText("one4"));
0 голосов
/ 23 января 2019

Selenium не поддерживает xpath-2.0, но использует xpath-1.0

Элемент, на который вы пытаетесь ссылаться, т.е. который содержит текст what10 , является текстовым узлом и Selenium , и не может использовать его в качестве ссылки. Поэтому найти узел с текстом one4 со ссылкой на текст what10 будет невозможно. В качестве альтернативы, если желаемым узлом всегда является последний, но один узел, вы можете использовать следующее решение:

  • * 1022 XPath *:

    driver.findElement(By.xpath("//body/p//a[position()=last()-1]"));
    

Обновление

Что касается встречного вопроса @MosheSlavin, здесь приведен снимок, демонстрирующий, что XPath прекрасно работает:

xpath_position

...