【问题标题】:Selenium C# - Clicking on hidden checkbox and disabled anchorSelenium C# - 单击隐藏的复选框和禁用的锚点
【发布时间】:2023-03-02 22:23:02
【问题描述】:

我正在测试的 HTML 有一个隐藏的复选框(显示设置为无),ID 为“ed_pa​​ssengers_terms”。后面是一个包含 2 个图标的跨度。根据是否选中复选框,图标会发生变化并启用锚。

复选框的 HTML:

<div class="field checkboxes divider-half color-focus">
              <input type="checkbox" id="ed_passengers_terms" name="ed_passengers[terms]" required="required" class="form-control  hide" value="1" />
              <label for="ed_passengers_terms" class="[ short-label  is-adjusted ]  label-stack">
                <span class="fa-stack">
                  <i class="icon-checkbox fa-stack-1x sc-grey-2"></i>
                  <i class="icon-tick text--h6 fa-stack-2x sc-yellow"></i>
                </span>
              </label>
              <span class="regular text--h6 sc-dark-grey">I accept SuperCoucou's <a target="_blank" href="/terms">Terms & Conditions</a></span>
          </div>

用于锚点的 HTML:

<a href="#" onclick="$('.ed-book-form').submit();return false;" class="disabled btn btn-action btn-block text-uppercase text--h7 semibold view-details divider-half">next</a>

启用锚点的 JavaScript:

if ($('#ed_passengers_terms').size() && $('#ed_passengers_terms').is(':checked')) {
    $('.btn-action').removeClass('disabled');
}

$('body').on('change', '#ed_passengers_terms', function() {
    if ($(this).is(":checked")) {
        $('.btn-action').removeClass('disabled');
    }
    else {
        $('.btn-action').addClass('disabled');
    }
});

我正在尝试创建一个在该页面上输入一些数据的测试,然后选中复选框以能够单击超链接并继续。

我尝试在跨度、图标和 div 上使用 Click()。它没有用。 我试过了:

((IJavaScriptExecutor)driver).ExecuteScript("$('#ed_passengers_terms').checked = True;");

作为一种解决方法,我想我可能会使用 JavaScriptExecutor 来启用锚点,它确实启用了它,但我似乎无法使用以下方法点击它:

driver.FindElement(By.CssSelector(".btn.btn-action.btn-block")).Click();

或使用:

driver.FindElement(By.XPath("//a[contains(.,'Next')]")).Click();

我需要一种方法来执行以下操作: 1 - 最好单击复选框,但如果这不可能,我可以使用 JavaScript 启用锚点,所以这不是问题。 2 - 单击锚点,以便执行 onClick 操作,然后重定向到正确的页面。

附:我无权更改 HTML 或 JavaScript,这不是我的脚本,我只是在测试它

【问题讨论】:

  • 我在共享 HTML 中看不到任何元素,其中 显示设置为无&lt;a&gt; 标签与共享的 HTML 有什么关系?您能否使用您尝试自动化的确切手动步骤更新问题?
  • 为了澄清,类 hide 添加到 id = "ed_pa​​ssengers_terms" 的输入字段有 display: none;
  • 具体步骤: 1 - 输入一些数据(没有问题) 2 - 选中 ID ed_pa​​ssengers_terms 的复选框 - 这将启用 3 - 点击

标签: c# selenium testing automation


【解决方案1】:

这是我找到的解决方案:

// this removes the hide class from the input which had display set to none
((IJavaScriptExecutor)driver).ExecuteScript("$('#ed_passengers_terms').removeClass('hide');"); 

// This clicked the checkbox using driver.FindElement(By.Id("id").Click(); didn't work
((IJavaScriptExecutor)driver).ExecuteScript("document.getElementById('ed_passengers_terms').click();");

// This clicked the anchor,  using driver.FindElement.Click() didn't work with class or xpath or cssSelector           
((IJavaScriptExecutor)driver).ExecuteScript("document.querySelector('.btn.btn-action.btn-block.divider-half').click();");

我是相当新的 Selenium(第 3 天),但从我目前看到的情况来看,似乎 javascriptexecutor 更可靠

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-08
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多