我正在尝试确定页面上是否有特定的文本。我正在这样做:
public static void WaitForPageToLoad(this IWebDriver driver, string textOnPage)
{
var pageSource = driver.PageSource.ToLower();
var timeOut = 0;
while (timeOut < 60)
{
Thread.Sleep(1000);
if (pageSource.Contains(textOnPage.ToLower()))
{
timeOut = 60;
}
}
}
问题是 Web 驱动程序的PageSource
属性在初始加载后不会更新。我正在导航到的页面在页面加载后通过JS加载了一堆数据。我不控制网站,所以我正在尝试找出一种获取更新 HTML 的方法。
您正在尝试解决错误的问题。您需要等待文本使用 XPath 定位器显示:
var wait = new WebDriverWait(driver);
var xpath = $"//*[contains(., '{textOnPage}')]";
wait.Until(ExpectedConditions.ElementIsVisible(By.XPath(xpath));
你真的需要搜索整个页面吗? 我会在这里参考你:https://stackoverflow.com/a/41223770/1387701
使用此代码:
String Verifytext= driver.findElement(By.tagName("body")).getText().trim();
然后,您可以检查验证文本是否包含您要检查的字符串。
如果您可以将文本的位置缩小到正文以外的特定 webElement,这将更好地工作。