繁体   English   中英

如何从 Xpath 获取 id 作为文本

[英]how to get the id from the Xpath as a text

我采用了如下所示的xPath ,但是当我尝试打印时无法获得值145666

WebDriverWait wait = new WebDriverWait(driver, 20);
    wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[contains(@class,'mat-content')]//div[@id='demandTrackingID']")));

现在我得到以下 Expception:

org.openqa.selenium.TimeoutException:预期条件失败:等待 By.xpath 定位的元素的可见性://span[contains(@class,'mat-content')]//div[@id='TrackID']

注意:这个 Html 元素是一个不可见元素,我需要检查面板并获取这个元素,因为这个元素没有字段

HTML:

        <div _ngcontent-wbh-c179="" id="TrackID" class="disp-none">14566 </div>

请试试这个:

WebElement trackid= driver.findElement(By.xpath("//span[contains(@class,'mat-content')]//div[@id='TrackID']"));
System.out.println("getid:"+ trackid.getText());

您可能需要在此之前添加一个显式等待,以便在检索内容之前使元素完全加载

WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[contains(@class,'mat-content')]//div[@id='TrackID']")));
WebElement trackid= driver.findElement(By.xpath("//span[contains(@class,'mat-content')]//div[@id='TrackID']"));
System.out.println("getid:"+ trackid.getText());

idID不是id

所以用这个:

WebElement trackid= driver.findElement(By.id("TrackID"));
System.out.println("getid:"+ trackid.getText());

包含所需文本的元素有一个 ID TrackID ,不要与页面上的“ID”文本混淆。 与您当前使用的 XPath 相比,您可以使用它更轻松地定位元素。 获得元素后,您可以使用WebDriverWait等待元素包含文本。 代码如下。

WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until((ExpectedCondition<Boolean>) d -> d.findElement(By.id("TrackID")).getText().length() != 0);

鉴于元素上的 class class="disp-none" ,我猜测该元素可能不可见。 如果是这种情况,您将不得不使用 JavaScript 来获取不可见的文本。 Selenium 旨在仅与可见元素交互,如果您尝试与不可见元素交互,则会抛出异常。

WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until((ExpectedCondition<Boolean>) d -> d.findElement(By.id("TrackID")).getText().length() != 0);
WebElement element = driver.findElement(By.id("TrackID"));
String trackID = (JavascriptExecutor)driver.executeScript("return arguments[0].text", element);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM