无法获取使用selenium-xpath动态显示的双引号中的值



我正在尝试获取值"19.5",该值在下面的代码中使用selenium中的xpath动态显示。有人能帮我用xpath得到19.5的值吗?我是硒的新手。

<li>
<label for="applyleave_leaveBalance">Leave Balance</label>
<div id="applyleave_leaveBalance" class>
"19.50"
<a href="#balance_details" data-toggle="modal" id="leaveBalance_details_link">view details</a>
</div>
</li>

多使用一点outerHTML会让解决方案变得更容易。但是,根据您提供的HTML提取值19.5,您需要诱导WebDriverWait使所需的元素可见,并且您可以使用以下任一解决方案:

  • cssSelector:

    WebElement element = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("table[aria-label='User']")));
    String myText = ((JavascriptExecutor)driver).executeScript('return arguments[0].firstChild.textContent;', myElement).toString();
    
  • xpath:

    WebElement myElement = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//label[contains(.,'Leave Balance')]//following::div[@id='applyleave_leaveBalance']")));
    String myText = ((JavascriptExecutor)driver).executeScript('return arguments[0].firstChild.textContent;', myElement).toString();
    

请按照以下步骤操作(1( 将定位器作为

@FindBy(xpath="//div[@id='applyleave_leaveBalance']")
private WebElement balance;
public void printBalance()
{
System.out.println(balance.getText());
}

尝试使用此

xpath="//div[@id='applyleave_leaveBalance']/text()[1]"

它将返回第一个文本节点。

最新更新