【问题标题】:Clicking on input checkbox with Selenium C#使用 Selenium C# 单击输入复选框
【发布时间】:2021-12-02 12:12:07
【问题描述】:

我正在尝试单击 Target.com 网站上的输入复选框项目,看起来 Selenium 正在尝试单击整个标签,但我无法单击输入。我得到的错误输出是:

OpenQA.Selenium.ElementClickInterceptedException : 元素点击被拦截:Element

<input id="buyOnlineAndGetShipped" name="buyOnlineAndGetShipped" type="checkbox" class="styles__CheckboxInput-sc-1v63imw-1 hLCJBJ" value=""> 

在点 (348, 503) 处不可点击。其他元素会收到点击:

<div class="styles__CheckboxVisual-sc-1v63imw-5 gxIeGa"></div>

我想做的是去https://www.target.com/s?searchTerm=dfgdfg

然后点击帮助我们改进此页面

然后点击复选框,说明在商店旅行前检查可用性

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
IWebElement feedbackButton = wait.Until((d) => d.FindElement(By.ClassName("Feedback__Prompt-h2r4q4-1")));
feedbackButton.Click();
driver.FindElement(By.Id("buyOnlineAndGetShipped")).Click();
<div class="styles__StyledRow-sc-1nuqtm0-0 cuJjmE h-margin-v-tight h-text-md">
  <div class="styles__CheckboxOuterWrap-sc-1v63imw-0 geGlXr nds-checkbox" tabindex="-1">
    <input id="checkAvailabilityBeforeStoreTrip" name="checkAvailabilityBeforeStoreTrip" type="checkbox" class="styles__CheckboxInput-sc-1v63imw-1 hLCJBJ" value="">
    <label for="checkAvailabilityBeforeStoreTrip" class="styles__CheckboxWrap-sc-1v63imw-3 biROVs"><div class="styles__CheckboxVisual-sc-1v63imw-5 gxIeGa">
      </div><span class="Label__StyledLabelSpan-nz63ak-1 FgzNt styles__CheckboxLabel-sc-1v63imw-4 dOkNFG">checking availability before a store trip
      <span aria-atomic="true" aria-live="assertive" class="utils__ScreenReaderOnly-sc-1p6kq06-0 iyDnVM"></span></span></label>
</div></div>

【问题讨论】:

    标签: c# asp.net selenium xunit


    【解决方案1】:

    您应该在全屏模式下最大化浏览器,然后您可以尝试使用 Java 脚本执行器,如下所示:

    下面的cssHTMLDOM中有唯一的入口:

    IWebElement e = Driver.FindElement(By.CssSelector("label[for='checkAvailabilityBeforeStoreTrip'] div"));
    ((IJavaScriptExecutor)Driver).ExecuteScript("arguments[0].click();", e);
    

    【讨论】:

    • 这仍然存在尝试单击整个标签而不是单击复选框的问题
    【解决方案2】:

    其实你的错误是正确的错误,那个复选框没有指向输入标签,它只指向div标签。所以请把输入改为div

    //div[@class='styles__CheckboxVisual-sc-1v63imw-5 gxIeGa']
    

    【讨论】:

    • 这仍然存在尝试单击整个标签而不是单击复选框的问题
    猜你喜欢
    • 2020-10-06
    • 2019-10-10
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 2019-02-19
    • 1970-01-01
    • 2017-09-24
    • 2021-12-11
    相关资源
    最近更新 更多