Невозможно получить значение в двойных кавычках, которое отображается динамически с помощью selenium xpath - PullRequest
0 голосов
/ 18 ноября 2018

Я пытаюсь получить значение «19,5», которое динамически отображается в приведенном ниже коде, используя 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>

Ответы [ 3 ]

0 голосов
/ 19 ноября 2018

Немного больше 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();
    
0 голосов
/ 19 ноября 2018

Попробуйте использовать это

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

Он вернет первый текстовый узел.

0 голосов
/ 18 ноября 2018

, пожалуйста, следуйте ниже шагам (1) принять локатор как

@FindBy(xpath="//div[@id='applyleave_leaveBalance']")
private WebElement balance;

public void printBalance()
{
System.out.println(balance.getText());
}
...