如何错误处理 Selenium 无法单击元素,因为其他元素在 C# 中遮挡了它? [复制]
Posted
技术标签:
【中文标题】如何错误处理 Selenium 无法单击元素,因为其他元素在 C# 中遮挡了它? [复制]【英文标题】:How to Error Handling Selenium can't click element because other element obscures it in c#? [duplicate] 【发布时间】:2019-04-09 21:49:56 【问题描述】:我使用了DebanjanB's answer,但没有解决错误:
元素在点 (860.5999755859375,36.69999694824219) 处不可点击,因为另一个元素遮住了它。
IWebDriver MyDriver = new FirefoxDriver();
IWebElement Element1 = MyDriver.FindElement((By.XPath("//a[@class='pagination-button pagination-button--next']")));
//IWebElement Element1 = MyDriver.FindElement((By.XPath("//html/body/main/div/div/div[3]/section[2]/header/div[1]/ul/li/a[@class='pagination-button pagination-button--next']")));
Element1.Click();
我大约十次得到一次错误。
【问题讨论】:
是什么遮挡了元素?你需要解决这个问题......没有一种尺寸适合所有人。像用户一样接近它......用户会做什么来解决这种情况?是对话吗?关闭它。是正在加载...屏幕吗?等待它出现然后消失......列表还在继续。使用更多信息和相关 HTML 更新您的问题。 【参考方案1】:您尝试使用的解决方案是 Java。你已经在 C# 下发布了这个。如果元素被遮挡并且没有消失(重叠元素),例如加载屏幕使用 javascript 将其从 dom 中删除,然后单击。
这应该可以。请用您的标识符替换我的按钮
WebDriverWait wait = new WebDriverWait(Driver, TimeSpan.FromSeconds(15));
IWebElement element = wait.Until(ExpectedConditions.ElementToBeClickable(myButton));
编辑:
不要忘记实际点击元素。
element.click();
【讨论】:
另外,请参阅 DebanjanB 对javaScriptExecutor
的回答 #6。
不工作,同样的错误
我需要查看代码。它是否告诉什么元素阻止了它?使用 selenium 检测遮挡您想要单击的元素的元素,当检测到时使用 javascript 将其删除,这样就不会遮挡您的元素。把完整的错误日志发给我,我会写代码。
好吧,我的朋友...以上是关于如何错误处理 Selenium 无法单击元素,因为其他元素在 C# 中遮挡了它? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
Selenium WebDriver JAVA:如何单击 x,y 坐标?
无法单击元素:Splinter / Selenium 中的 ElementClickInterceptedException
如何通过Selenium和Python从没有Select标签的Dropdown中选择最后一个值