【发布时间】:2018-08-09 20:40:13
【问题描述】:
我遇到了隐藏元素的问题。该站点已完全加载,因此所有可用的项目,无需加载,切换页面。 我尝试了使用 ExpectedConditions 的所有选项,但仍然没有等待元素。使用 Find 功能,我得到了位置,但 x,y 坐标是: (-125, 156) 所以无法单击它(在屏幕上也不可见) 非常糟糕的解决方法是 while + Thread.Sleep(1000);和一个计数器..而 x>0 和 >0 我想避免..有什么想法吗? 代码示例:
ChromeOptions chromeCapabilities = new ChromeOptions();
chromeCapabilities.EnableMobileEmulation("iPhone 7");
IWebDriver webDriver = new ChromeDriver(chromeCapabilities);
webDriver.Manage().Window.Maximize();
webDriver.Navigate().GoToUrl("https://m.exmaple.org");
WebDriverWait driverWait = new WebDriverWait(webDriver, TimeSpan.FromSeconds(30.0));
IWebElement menu_1;
IWebElement switch_left;
switch_left = webDriver.FindElement(By.Id("item_1"));
switch_left.Click(); // ~3-5 sec while switched left because of animations
driverWait.Until(ExpectedConditions.ElementToBeClickable(By.Id("item_1"))));
menu_1 = webDriver.FindElement(By.Id("item_1"));
menu_1.Click(); System.InvalidOperationException: 'unknown error: Element is not clickable at point (-125, 156)
【问题讨论】:
-
你到底想做什么?如果某个元素不可见,您将无法单击它。你确定你不想点击别的东西吗?那可能包含不可见的元素?
-
所以步骤:加载页面单击switch_left(小于500ms)单击menu_1并在那里..我收到错误...因为有az动画..比我可以看到menu_1。所以我需要等待......
-
如果我是你,我可能会仔细查看 dom 中的元素,看看它们上面是否有任何属性表明动画已经发生,或者可见页面的状态是 left 还是对或什么。如果没有这样的事情,那么我会查找如何创建自定义等待,以等待元素停止移动,以便您知道动画已完成。
标签: c# selenium selenium-webdriver selenium-chromedriver webdriverwait