как игнорировать span с List <WebElement> - PullRequest
0 голосов
/ 15 марта 2019

Я пытаюсь извлечь Main Text1 и Main Text2 из структуры DOM.

<div class="origination">
<div class="origin">
<h3>
Main Text1
<span class="info">Test1</span>
</h3>
<div class="test">
</div>
</div>
<div class="origin">
<h3>
Main Text2
<span class="info">Test2</span>
</h3>
<div class="test">
</div>
</div>
</div>

Я использовал ниже xpath с text () для идентификации заголовка без диапазона

  @FindBy(xpath = ".//*[@id='origination']/div[*]/h3/text()")
    List<WebElement> content;

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

for (WebElement element: content){
 System.out.println("Header" + element.getText());
    }

Но я получаю ошибку:

org.openqa.selenium.NoSuchElementException: Превышено время ожидания через 15 секунд.Элементы списка не найдены

Однако, когда я использовал один и тот же XPath для элементов firepath, они выделяются в структуре DOM, но не на странице.

Ответы [ 2 ]

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

Используя XPath, вы, вероятно, не сможете получить значение. Однако, если вы выполните некоторые string манипуляции, вы сможете достичь ожидаемых результатов.

List<WebElement> listData = driver.findElements(By.xpath("//div[@class='origin']/h3"));
for(int i=0;i<listData.size();i++) 
    {    
    System.out.println(listData.get(i).getText().replaceFirst(listData.get(i).findElement(By.tagName("span")).getText(), ""));

    }

Вывод:

Main Text1 
Main Text2 

Надеюсь, это поможет.

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

Вот ответ.

spanText = element.findElement(By.xpath("//span[@class='info']")).getText()
element.getText().Replace(spanText, string.Empty);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...