Selenium 中的 PageSource 属性可以在 JavaScript 加载数据时更新吗?



我正在尝试确定页面上是否有特定的文本。我正在这样做:

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,这将更好地工作。

相关内容

  • 没有找到相关文章

最新更新