Как извлечь частичный текст из элемента, разделенного тегом <br>через селен? - PullRequest
0 голосов
/ 16 марта 2019

Как отделить 70 от 70 (100%) , где 70 и (100%) связаны тегом <br> в селене?

Вотструктура:

<a href="/report/campaigns/698/sent" class=""> 70<br> (100%)</a>

Код, который я использую:

String[] REP=new String[1];
String Repor= driver.findElement(By.xpath("//html[1]/body[1]/section[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[5]/table[1]/tbody[1]/tr[1]/td[6]")).getText();

REP=Repor.split(""); 

System.out.println("REP "+REP[0]);

Вывод, который я получаю: 7

Ответы [ 3 ]

1 голос
/ 16 марта 2019

Для извлечения текста 70 вы можете использовать одну из следующих Стратегий локатора :

  • cssSelector :

    WebElement myElement = driver.findElement(By.cssSelector("a[href='/report/campaigns/698/sent']"));
    String myText = ((JavascriptExecutor)driver).executeScript('return arguments[0].firstChild.textContent;', myElement).toString();
    
  • xpath :

    WebElement myElement = driver.findElement(By.xpath("//a[@href='/report/campaigns/698/sent']"));
    String myText = ((JavascriptExecutor)driver).executeScript('return arguments[0].firstChild.textContent;', myElement).toString();
    
1 голос
/ 16 марта 2019

Это Xpath сумасшедший, но для решения вашей проблемы, я думаю, это может быть так же просто, как добавить пробел между кавычками в вашей функции split ().Это должно быть

REP=Repor.split(“ “)

Редактировать после уточнения: строка Repor устанавливается с разрывом строки.Таким образом, следующий код должен найти «70» и «(100%)» по отдельности.

String lines[] = Repor.split("\\r?\\n");

, тогда lines[0] - это «70», а lines[1] - «(100%)».Это то, что вы хотели?

0 голосов
/ 17 марта 2019

Каждый тег считается разделителем для существующего текстового узла родительского тега: решение заключается в указании индекса нужного текстового узла //a/text()[1]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...