Как извлечь динамический текст 3204255 из HTML, предоставляемого через Selenium? - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь получить число от div. Когда я выполняю свои тестовые задания, отображается новое число, теперь я хочу получить это число или, другими словами, напечатать его в консоли.

Я использовал:

webElement webelement=driver.findElement(By.xpath("//div[contains(@class,'responsive now') and text()='Application number']"));
webelement.getText();

и

driver.findElement(By.xpath("//div[@class='responsive-show']")).getAttribute("value");

это не компилируется с локаторами, но не показывает номер.

<td> 
  <div class="responsive-show">Application number</div>
  "3204255" 
  <input data val="true" data-val-number="The field ExaminationNumber must be a number." data-val-required="The ExaminationNumber field is required." id="ActiveExamModeIs_0__ExaminationNumber" name="ActiveExamMode[0].ExaminationNumber" type="hidden" value="3204255"> 
  <input data -val="true" data-val-number="The field ExaminationEligibilityExamTypeId must be a number" data-val-required="The ExaminationEligibilityExamTypeId fiels is required." type="hidden" value="1">
</td>

enter image description here

Ответы [ 3 ]

0 голосов
/ 29 августа 2018

В соответствии с HTML , которым вы поделились, чтобы извлечь число, т. Е. 3204255 , вам нужно заставить WebDriverWait , чтобы нужный элемент был видимым , тогда вы можете использовать метод executeScript() согласно следующему решению:

  • Java решение:

    WebElement myElement = new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//table[@class='table table-hover']//tbody/tr/td")));
    String myText = ((JavascriptExecutor)driver).executeScript('return arguments[0].childNodes[2].textContent;', myElement).toString();
    
0 голосов
/ 30 августа 2018

Длинно и коротко: нет простого способа получения текстового значения с использованием простых функций Selenium, если только вы не хотите использовать "JavascriptExecutor"

Альтернативный вариант - получить весь текст из элемента <td>, используя простые операции селена, а затем использовать функцию String substring(), чтобы получить значение номера вашего приложения, заключенное в кавычки ".

Код:

    String input = driver.findElement(By.xpath("//table[@class='table table-hover']/tbody/tr/td")).getAttribute("innerText");
    input = input.substring(input.indexOf("\"")+1, input.lastIndexOf("\""));
    System.out.println("Extracted Value" + input);
0 голосов
/ 29 августа 2018

текст: 3204247 не содержится в теге div, но входит в <td>. Вы можете попробовать это:

webElement webelement=driver.findElement(By.xpath("//table[@class='table table-hover']/tbody/tr/td"));// you can improve this locator and can also use one below
//webElement webelement=driver.findElement(By.xpath("//div[@class='responsive-show']/..")); using xpath axes
String value=webelement.getText();// OR
//String value=webelement.getAttribute("innerText");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...