无法使用 Selenium webdriver(c#)选择复选框
我已经为此困惑了几个小时。在 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#
不幸的是,我无法发布网址,因为它是一个带密码的客户端站点。如果我可以发布 HTML,那可能会有所帮助...
我已经发布了相关页面的 html,但删除了客户端名称 :)
如果我通过
Chrome
开发人员工具选中复选框并复制
Xpath
,我会得到这个。
IWebElement checkBox = m_driver.FindElement(By.XPath("/html/body/div[1]/main/section/form/div[2]/label/input"));
我重新运行它,
Selenium
生成了一个错误。
Message: OpenQA.Selenium.WebDriverException : unknown error: Element is not clickable at point (491, 593). Other element would receive the click: ... (Session info: chrome=71.0.3578.98) (Driver info: chromedriver=2.45.615291 (ec3682e3c9061c10f26ea9e5cdcf3c53f3f74387),platform=Windows NT 10.0.17134 x86_64)
这是勾选了复选框的开发人员工具的屏幕截图。这可能与“span”有关吗?
您点击的是
SPAN
,而不是复选框
INPUT
。这应该可以正常工作。
m_driver.FindElement(By.CssSelector("input[name='privacy']")).Click();
您可能需要等待,具体取决于点击前发生的情况。
您关于元素不可点击的错误可能是多种原因。可能是弹出窗口阻止了它、浮动 DIV 面板、加载微调器等。您需要处理弹出窗口(通过关闭它等),浮动 DIV 可能需要滚动页面,或者微调器需要等待微调器变为不可见。如果没有更多信息,很难说。
我搞定了。我没有使用“checkBox.Click();”,而是使用了“checkBox.SendKeys(Keys.Space);
而且成功了。现在我尝试使用 recaptcha 做同样的事情,从定义上来说这应该很难。