我已经为此困惑了几个小时。在Stackoverflow上检查了类似的问题,但是找不到解决方法。
我有一个复选框,我正在尝试使用Selenium Webdriver进行检查,但是当我运行脚本时,我没有收到任何错误消息,但此复选框未选中。
我正在使用以下行选择并选中该框
IWebElement checkBox = m_driver.FindElement(By.XPath("//div[2]/label/span"));
checkBox.Click();
我从下面复制了HTML。
<div class="input-group single-option label-empty" >
<label class="" >
<input type="checkbox" name="privacy" value="true" required />
<span>I have read and understood the <a data-toggle="#privacy-terms"
data-group="privacy-terms">Privacy Policy</a> and <a data-toggle=
"#terms" data-group="privacy-terms">Terms and Conditions</a>. </span>
</label>
我真的很感谢您的帮助。我对自动化很陌生...还有C#
不幸的是,我无法发布该URL,因为它是一个带有密码的客户端站点。如果我可以发布HTML,那可能会有所帮助...
我已经从相关页面发布了html,但删除了客户名称:)
如果我通过Chrome
开发人员工具选中了该复选框并复制了Xpath
,我就会明白。
IWebElement checkBox = m_driver.FindElement(By.XPath("/html/body/div[1]/main/section/form/div[2]/label/input"));
我重新运行它,Selenium
产生了一个错误。
消息:OpenQA.Selenium.WebDriverException:未知错误:元素 不是 在(491,593)点可点击。其他元素将获得点击: ...(会话信息:chrome = 71.0.3578.98)(驱动程序信息: chromedriver = 2.45.615291 (ec3682e3c9061c10f26ea9e5cdcf3c53f3f74387),平台= Windows NT 10.0.17134 x86_64)
下面是选中该复选框的开发人员工具的屏幕截图。可能与“跨度”有关吗?
答案 0 :(得分:1)
我知道了。而不是使用“ checkBox.Click();”,而是使用“ checkBox.SendKeys(Keys.Space);
,并且有效。现在,我正在尝试对Recaptcha做同样的事情,按照定义,这应该很困难。
答案 1 :(得分:0)
您正在单击SPAN
而不是复选框的INPUT
。这应该起作用。
m_driver.FindElement(By.CssSelector("input[name='privacy']")).Click();
您可能需要等待,具体取决于点击之前发生的情况。
关于元素的错误是不可点击的,可能是任何原因。可能是弹出窗口阻止了它,一个浮动的DIV面板,一个加载微调器,...等。您将需要处理弹出窗口(通过将其关闭等),浮动的DIV可能需要滚动页面,或者旋转器等待旋转器变得不可见。没有更多信息很难说。