当前位置: 首页 > 知识库问答 >
问题:

Selenium C#-点击隐藏复选框和禁用锚

卢文博
2023-03-14

我正在测试的超文本标记语言有一个带有ided_passengers_terms的隐藏复选框(显示设置为无)。后面是一个跨度,里面有2个图标。根据是否选中复选框,图标会更改,并启用锚。

复选框的超文本标记语言:

<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>

锚的超文本标记语言:

<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上使用单击()。它没有工作。我尝试过:

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

作为一种变通方法,我想我可能会使用JavaScriptExecator来启用锚,它确实启用了它,但我似乎无法单击它,无论如何使用:

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

或使用:

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

我需要一种方法能够做到以下几点: 1-最好单击复选框,但如果不可能,我可以使用JavaScript启用锚,所以这不是问题。2-单击锚,以便执行onClark操作,然后将其html" target="_blank">重定向到正确的页面。

另外,我没有权限更改HTML或JavaScript,这不是我的脚本,我只是在测试它

共有1个答案

廉志强
2023-03-14

这就是我找到的解决方案

// 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(第三天),但就我目前所见,javascriptexecutor似乎更可靠一些

 类似资料:
  • 问题内容: 任何人都可以对如何做到这一点有所了解吗? 问题答案: 以下网站同时禁用了右键单击和查看源代码。 他们骗了你。只需在视图源中向下滚动即可。 此外,采用这样的策略会将您标记为不专业。不要这样

  • 我创建了一个TableView,其中包含一个复选框列(isSelected)和三个信息列(姓名、姓氏、职务)。我想根据用户信息禁用一些复选框。例如,如果用户名为“Peter”,则Peter旁边的复选框将被禁用。但我不能。以下是我的一些代码: 人JAVA 控制器。JAVA

  • 问题内容: 我想做的是在选中标签+复选框时显示并隐藏div。(仅CSS) 因此,如果单击(选中)[注册]。隐藏自身(div.remove- check)并显示隐藏的输入(div#email)。我以为我拥有的代码就足够了,但事实并非如此。我究竟做错了什么? 我的代码: HTML: CSS: 这是用来向您展示我正在使用的工具的 小提琴 。 提前谢谢你的帮助。 问题答案: 当前CSS中没有父选择器,这就

  • 我在下面的代码中尝试实现的是,默认情况下,当我单击home复选框时,不显示home标题和段落,然后显示它 当我解开它的时候,它就隐藏起来了 我的功能在下面的代码中运行良好,但我无法实现这一点 当我点击home复选框,然后段落显示,当取消点击,然后隐藏 检查我下面的代码,当我运行文件时,我在我的代码中发布,默认情况下,主页段落显示。 但我想实现后点击复选框,然后显示所有的东西。并且我想尝试当我运行页

  • 搜索特定字符串后是否可以隐藏行?我有这个功能,现在它正在寻找确切的单词和如何使它寻找字符串: