如何从通过Selenium提供的html中提取动态文本3204255?

问题描述 投票:-1回答:3

我试图从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>

javascript java selenium selenium-webdriver
3个回答
0
投票

根据您共享的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
投票

text: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");

0
投票

它的长短:除非你想使用“JavascriptExecutor”,否则没有一种简洁的方法可以使用简单的Selenium函数获取文本值

替代选项是使用简单的selenium操作从<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);
© www.soinside.com 2019 - 2024. All rights reserved.