当前位置: 首页 > 知识库问答 >
问题:

C#Selenium刷新所有状态元素

湛宝
2023-03-14

我正在使用Angular材质选项卡,并且我的所有元素在切换到不同的选项卡(具有克隆网格)后都变得陈旧。不是对我网格上的所有20个元素都这样做,而是有办法刷新页面上的所有元素,这样我的引用就不会陈旧?

我们正在努力获取网格上的价值。

private By JobIdHeaderGrid => By.XPath("//span[text() = 'Process ID']");

陈旧元素引用:元素未附加到页面文档

try {
    WebElement date = driver.findElement(By.linkText(Utility.getSheetData(path, 7, 1, 2)));
    date.click();
}
catch(org.openqa.selenium.StaleElementReferenceException ex)
{
    WebElement date = driver.findElement(By.linkText(Utility.getSheetData(path, 7, 1, 2)));
    date.click();
}

共有1个答案

全丰
2023-03-14

简而言之,答案是否定的,没有办法自动刷新过时的元素。基本上,过时的元素是不再附加到DOM的元素。这可能有多种原因。。。页面会重新加载,浏览器会从页面中移开或返回到页面,等等。在你的情况下,当你切换选项卡时,听起来就像页面更改一样,会清除所有引用。

我建议不要存储引用,而是创建获取然后使用元素的方法,例如单击。

public void ClickDate()
{
    driver.findElement(By.linkText(Utility.getSheetData(path, 7, 1, 2))).click();
}

这样的话,你应该去掉所有过时的元素,因为你没有获取它们,切换标签,然后再返回,然后单击存储的引用。你总是抓取,然后立即点击。

 类似资料:
  • 我使用“userdefaults”存储用户重新加载页面的日期时间。但是,我发现即使时间过了,它也不会刷新 因为我正在测试,所以我用“分钟”来简化我的测试。我希望当每分钟发生变化时,上面的代码会更新我的UserDefaults。 我发现我浏览到另一个页面,回到HomeView。时间戳根本没有更新。我打印了lastLaunchDate,它也没有更新。

  • 2.19 刷新状态查询 2.19.1 描述 返回刷新进度 2.19.2 请求地址 地址: https://api.bokecs.com/queryrefresh/{package_id} 2.19.3 请求方式 GET 2.19.4 请求参数 参数名称 是否必须 参数描述 package_id 是 刷新接口中code为200时返回的message 2.19.5 请求格式 json 2.19.6 举

  • 我现在正在学习React,但在重新渲染组件时遇到了问题。应用程序。js代码: 问题是不是最新的。它总是弱智,这是以前的状态。我试图调用一个在和的回调中,但是它仍然不起作用,我不知道为什么。

  • 我的应用程序使用Firebase API进行用户身份验证,将登录状态保存为Vuex状态下的布尔值。 当用户登录时,我设置登录状态并相应地有条件地显示登录/注销按钮。 但是当页面刷新时,vue应用的状态丢失并重置为默认 这会导致一个问题,即使用户登录并刷新页面,登录状态也会被设置为false,并且显示登录按钮而不是注销按钮,即使用户保持登录状态... 我该怎么做才能防止这种行为 我应该使用cooki

  • 我想运行一个selenium测试,当单击旧页面中的按钮时,它是否导航到新页面。然后我想测试当新页面中的按钮被点击时,它是否导航回旧页面。 当我单击第一页上的按钮并检查新页面上的按钮元素是否出现时,测试工作正常。但是当我使用selenium点击第二页上的button元素,检查第一页上的button元素是否已经出现时,它没有找到第一页上的button元素,尽管我第一次使用相同的button元素去第二页

  • 嗨,我是硒的新手 我正在使用,已经尝试了和驱动程序。 我正在运行一个循环。有趣的是,循环有时会工作3、2次,它并不总是在同一次迭代中失败。我假设它与某种竞争条件有关(例如等待页面加载)。如果我在调试模式下运行,它似乎可以完美地工作。 我已经尝试了其他答案的建议,比如显式等待和隐式等待,但仍然没有帮助。也许如果你看到密码你可以帮我一把。 这是一个循环。 解决方案 解决方案是彻底破解。我仍然不明白,但