开发者问题收集

无法使用 Selenium webdriver(c#)选择复选框

2018-12-20
701

我已经为此困惑了几个小时。在 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,但删除了客户端名称 :)

链接到 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”有关吗?

2个回答

您点击的是 SPAN ,而不是复选框 INPUT 。这应该可以正常工作。

m_driver.FindElement(By.CssSelector("input[name='privacy']")).Click();

您可能需要等待,具体取决于点击前发生的情况。

您关于元素不可点击的错误可能是多种原因。可能是弹出窗口阻止了它、浮动 DIV 面板、加载微调器等。您需要处理弹出窗口(通过关闭它等),浮动 DIV 可能需要滚动页面,或者微调器需要等待微调器变为不可见。如果没有更多信息,很难说。

JeffC
2018-12-20

我搞定了。我没有使用“checkBox.Click();”,而是使用了“checkBox.SendKeys(Keys.Space);

而且成功了。现在我尝试使用 recaptcha 做同样的事情,从定义上来说这应该很难。

Dave
2018-12-20