Как сформировать сложный xpath? - PullRequest
1 голос
/ 03 октября 2019

Я новичок в селене и пытаюсь сформировать сложный xpath для моего проекта. Я попробовал и уже проверил несколько решений, но ни одно из них не работает правильно. Пожалуйста, посмотрите и дайте мне знать ваши ценные отзывы

Пробные решения

1. //div[@id='agree']//following-sibling::br
2. //div[@id='agree']

HTML

<div id="agree">
<label class="Control-label">Privacy Policy and Terms of Conditions</label>
<br style xpath="1">
Your personal information provided to us will be used
<a href="/privacy/statment" title="privacy policy">privacy policy</a>
"."
<br style xpath="2">
<br style xpath="3">
<a href="terms condition" title="terms condition">terms condition</a>
<br style xpath="4">
<br style xpath="5">
<a href="terms condition" title="terms condition">terms condition</a>

Ожидаемое решение:

Your personal information provided to us will be used privacy policy.

Ответы [ 2 ]

0 голосов
/ 03 октября 2019

Это просто альтернативные варианты.

В селене Если вы используете java, вы можете получить либо свойство text тега div, либо атрибут textContent тега div, а затем выполнитьразделенные линии.

Если вы используете Текст property. Попробуйте следующий код.

WebDriverWait wait = new WebDriverWait(driver, 10); 
WebElement element=wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@id='agree']")));
String text=element.getText();
String[] lines = text.split("\\r?\\n");
System.out.println(lines[1]);

Если вы используете textContent Атрибут, попробуйте это.

WebDriverWait wait = new WebDriverWait(driver, 10);         
WebElement element=wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@id='agree']")));
String text=element.getAttribute("textContent");
String[] lines = text.split("\\r?\\n");
System.out.println(lines[3] + " " +lines[4].trim() + lines[5]);
0 голосов
/ 03 октября 2019

Я не уверен, как это работает с селеном, и если это действительно ваш желаемый вывод, но попробуйте это выражение xpath:

//div/text()[3] | //div/a[1]/text()

или, в зависимости от вашей реализации

//div/text()[3], //div/a[1]/text()

[обратите внимание, что, опять же, в зависимости от вашей реализации, position() из text() в первой части выражения может быть 1 или 2.]

В любом случае,должно вывести:

Your personal information provided to us will be used
privacy policy
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...