【发布时间】:2023-03-02 22:23:02
【问题描述】:
我正在测试的 HTML 有一个隐藏的复选框(显示设置为无),ID 为“ed_passengers_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 中看不到任何元素,其中 显示设置为无。
<a>标签与共享的 HTML 有什么关系?您能否使用您尝试自动化的确切手动步骤更新问题? -
为了澄清,类 hide 添加到 id = "ed_passengers_terms" 的输入字段有 display: none;
-
具体步骤: 1 - 输入一些数据(没有问题) 2 - 选中 ID ed_passengers_terms 的复选框 - 这将启用 3 - 点击
标签: c# selenium testing automation