![](/img/trans.png)
[英]How to get text from a dynamic label id HTML field using its relative xpath in Katalon?
[英]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());
id
是ID
不是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.