【问题标题】:Selenium didn't click second time after being reloaded to homepageSelenium 重新加载到主页后没有第二次点击
【发布时间】:2021-09-26 22:16:10
【问题描述】:

我这里有一个测试用例:

我的页面左侧部分是手风琴菜单。当我执行单击父菜单时,它起作用了。并且网站右侧会显示“你没有权限”并返回首页。

当我第二次访问时,右侧部分将显示正常内容。所以我应该再次单击菜单,然后在我的测试代码中这样写。但它没有执行任何点击操作——只是将点击操作传递到下一步。所以我的测试失败并抛出错误。

我查看了由 selenium webdriver 控制的浏览器。页面重新加载到主页后,它显然被冻结了。

错误信息显示:

Test method AutomationTesting.cuteTest.CheckChocolate threw exception: 
OpenQA.Selenium.WebDriverTimeoutException: Timed out after 5 seconds ---> OpenQA.Selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@class='menuChocolate']/a"}

我的测试代码:(为什么一定要点击第二次是因为这个页面需要第二次来才能显示正常的UI)

  DessertsMenu.Click();

  WebDriverWait waitForMenu= new WebDriverWait(Driver, TimeSpan.FromSeconds(5));
  waitForMenu.Until(ExpectedConditions.ElementIsVisible(By.XPath("//*[@class='menuChocolate']/a"))).Click();
            
  DessertsMenu.Click();
  WebDriverWait waitAgain= new WebDriverWait(Driver, TimeSpan.FromSeconds(5));
  waitAgain.Until(ExpectedConditions.ElementIsVisible(By.XPath("//*[@class='menuChocolate']/a"))).Click();

我查看了由 selenium 控制的浏览器,它实际上是单击菜单。但我不知道为什么它没有再次点击。 我有什么遗漏吗?

【问题讨论】:

  • 谢谢大家,我用Driver.Navigate().Refresh();解决了我不知道它为什么起作用,奇怪。

标签: selenium selenium-webdriver


【解决方案1】:

如果页面重新加载,我认为您将不得不再次定位父菜单。

如果即使在找到元素之后,您也无法单击父菜单,那么我建议您尝试使用JavaScriptExecutor 单击父菜单。 https://www.guru99.com/execute-javascript-selenium-webdriver.html

【讨论】:

    【解决方案2】:

    您可以使用以下选项对其进行故障排除--

    1. 你能在第一次点击后检查它是否显示相同的xpath,可能是点击后xpath正在改变
    2. 您可以在第一次点击和第二次点击之间等待一秒钟

    3.如果以上两个选项都不起作用,那么你可以使用 JavaScriptExeccutor

    【讨论】:

      猜你喜欢
      • 2018-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多