selenium - Selenium 重新加载到主页后没有第二次点击
问题描述
我在这里有一个测试用例:
我的页面左侧部分是手风琴菜单。当我执行单击父菜单时,它起作用了。并且网站右侧部分会显示“你没有权限”并返回首页。
当我第二次访问时,右侧部分将显示正常内容。所以我应该再次单击菜单,然后在我的测试代码中这样写。但它没有执行任何点击操作——只是将点击操作传递到下一步。所以我的测试失败并抛出错误。
我查看了由 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 控制的浏览器,它实际上是单击菜单。但我不知道为什么它没有再次点击。有什么我想念的吗?
解决方案
如果页面重新加载,我认为您将不得不再次找到父菜单。
如果即使在找到元素之后,您也无法单击父菜单,那么我建议您尝试使用JavaScriptExecutor
.
https://www.guru99.com/execute-javascript-selenium-webdriver.html
推荐阅读
- ios - 如何在 RxSwift 中设置 RxTimeInterval 以防抖动?
- reactjs - 填充对象数组
- scala - 如何将一个 lambda 表达式对象分配给另一个?
- r - 当 droplevels() 在 R 中不起作用时,删除一个因子的级别
- nginx - 如何将 nginx 配置为 proxy_pass?
- python - Opencv 是否允许您使用 6 个点计算 3x4 透视变换?
- lua - 是否有类似于 lua 的可沙盒编译的编程语言
- flutter - 安装后我无法运行任何颤振命令。什么都没发生
- javascript - 如何在 C# 中解码 Ajax 调用 QueryString 的一部分
- haskell - 理解第一个参数使用翻转时的映射函数