OpenQA.Selenium.WebDriverException:'无法单击元素'

时间:2019-10-10 19:49:39

标签: c# selenium unit-testing selenium-webdriver

我有这行代码。

driver.FindElement(By.Id("BCA-button")).Click();

这在“家”中工作正常。

我正在C#单元测试项目中使用这些库。

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.IE;

同一代码停止在“办公室”中工作并给出此错误。

OpenQA.Selenium.WebDriverException: 'Cannot click on element'

我的“家庭”和“办公室”环境之间唯一的区别是,我在办公室和高速互联网中拥有更大的显示器。

不确定,为什么这些因素会影响这一行代码。昨天,相同的代码在“家庭”中工作,今天在“办公室”中引发错误。

有什么想法吗?

Added Snapshot for more clarity.

这是另一种尝试。

I am using 'InvisibilityOfElementLocated'

6 个答案:

答案 0 :(得分:0)

得出<<extends>>WebDriverWait()

ElementToBeClickable

您需要导入该库。

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
IWebElement elebutton = wait.Until(ExpectedConditions.ElementToBeClickable(By.Id("BCA-button")));
elebutton.Click();

答案 1 :(得分:0)

我认为最好的方法是使用XPath。您可以创建一个延迟,直到找到XPath元素。

答案 2 :(得分:0)

在这里很好地解释了单击元素的不同方式:Selenium Web Driver & Java. Element is not clickable at point (x, y). Other element would receive the click

element.click()即使元素可用并且显式等待应用于元素时,我也总是使用第五种方式。

答案 3 :(得分:0)

我发现了问题。如果屏幕分辨率显示设置,文本大小不是100%(推荐设置),则“ Selenium Web Driver”无法执行单击事件。

Display Setting on Screen Resolution

答案 4 :(得分:0)

出现异常的原因:

OpenQA.Selenium.WebDriverTimeOutException: 'Cannot click on element'

是WebDriver正在等待该元素,但是在达到超时限制之前找不到它。

还有其他包裹或覆盖您要单击的元素的元素吗?

答案 5 :(得分:0)

尝试隐式等待

driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(50);