如何错误处理 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 坐标?

如何通过 Selenium Python 点击​​一个元素

无法单击元素:Splinter / Selenium 中的 ElementClickInterceptedException

如何通过Selenium和Python从没有Select标签的Dropdown中选择最后一个值

如何通过 Java 使用 XPath 和 Selenium WebDriver 单击 SVG 元素

Selenium WebDriver Java - 如何执行“如果存在,则单击,否则跳过”?