Как получить данные или идентифицировать тег , т. е. Успешно завершен с использованием Selenium Java

#java #selenium #xpath #css-selectors #webdriverwait

#java #селен #xpath #css-селекторы #webdriverwait

Вопрос:

 <TABLE height="100%" cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD height="100%" vAlign=top width="86%" align=center>
<TABLE cellSpacing=0 cellPadding=0 width="80%" border=0>
<TBODY>
<TR>
<TD vAlign=top align=center>
<TABLE class=table_border_dark cellSpacing=1 cellPadding=0 width="80%" border=0>
<TBODY>
<TR align=center>
<TD bgColor=#ffffff colSpan=2>
<TABLE class=table_border_dark cellSpacing=1 cellPadding=1 width="60%" border=0>
<TBODY><LEGEND><B>Successfully Completed</B></LEGEND></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
  

Я пытался с:

 boolean table = driver.findElement(By.xpath("//div[@id='eodProgress']/..//b[contains(text(),'EOD Process Successfully Completed')]")).isDisplayed();
System.out.println(table);
  

Но я получил сообщение об ошибке, что не удается найти элемент.

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

1. Во время манипулирования вы уничтожили HTML, и в настоящее время это недопустимый HTML. Обновите вопрос с помощью HTML как есть.

2. Обновленный HTML-код как есть, спасибо.

3. Вы удалили <TBODY> и закрывающий <TABLE> теги и добавили текстовый процесс EOD в innerHTML. Но, к сожалению, HTML по-прежнему недействителен. Вы перепутали положение <TD> и <LEGEND> тегов.

4. Почему вы испытываете трудности при манипулировании HTML? Просто скопируйте и вставьте его. Вот и все. Не причинит никакого вреда.

5. Похоже, что ваш образец html не содержит текст, который вы ищете EOD Process Successfully Completed

Ответ №1:

Чтобы извлечь текст внутри <b> тега, т.е. успешно завершенный, вы должны вызвать WebDriverWait для visibilityOfElementLocated, и вы можете использовать любое из следующих решений:

  • cssSelector :

     String myText = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("TABLE.table_border_dark LEGEND>B"))).getAttribute("innerHTML");
      
  • xpath :

     String myText = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//TABLE[@class='table_border_dark']//LEGEND/B"))).getAttribute("innerHTML");
      

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

1. Прошу прощения, я должен был предоставить полный HTML-код, потому что существует несколько классов с одинаковым значением (tableborderdark). Я снова обновлю HTML-код.

2. @manisha Если ваши требования изменились, не стесняйтесь задавать новый вопрос. Участники Stack Overflow будут рады вам помочь.