jquery - 选择隐藏在按钮下的复选框

标签 jquery selenium selenium-webdriver

我需要选中复选框,但点击功能失败。

我的网页中有按钮:

<button type="button" class="ui-multiselect ui-widget ui-state-default ui-corner-all" aria-haspopup="true" style="">
spans...
</button>

我们有复选框:

<ul class="classa123 classb123" style="">
<li class=" ">
<label class="classoflabel" title="" for="checkbox-123">
<input type="checkbox" title="Select This" value="1" name="multiselect-box-type" id="checkbox123">
<span>Select This</span>
</label></li>
    ...

如何选择此复选框? 使用 find_element_by_id("checkbox123").is_selected() 我发现复选框未选中,但是当我尝试 .click() 时它失败了。我想也许我应该首先通过单击按钮打开复选框,但该按钮没有唯一的 ID 或类。 我正在使用 selenium webdriver 和 python。如果您知道如何解决这个问题,您也可以用其他语言编写代码。 谢谢...

最佳答案

好的,我想我明白你需要的了。首先,如果您使用 jQuery,则可以使用任何 CSS 选择器作为选择器来获取元素。例如,要获取 idcheckbox123 的输入,您只需:

$('#checkbox123')

但是,如果您想要 ul 中的输入复选框集合,那么您可以选择如下:

$('ul input[type=checkbox]')

最后,判断是否被检查非常简单。

var checked = $('#checkbox123').is(':checked');
//  see your result in developer console with 
console.log(checked); // will be `true` or `false`

如果您尝试在单击按钮后获取跨度(带有文本选择此),您可以尝试以下操作:

$('button').click(function(e) {
    $('ul input[type=checkbox]:checked').each(function(i) {
        var span = $(this).next('span');
        alert(span.text())
    });
})
<小时/>

最后一次调用,如果需要更改复选框的状态,请使用 .propchecked 上使用 bool 值。如:

$('#checkbox123').prop('checked', true); // will make it checked
$('#checkbox123').prop('checked', false); // will uncheck it

我相信自上次回答问题以来这可能已经更新,因此我将在此处更新答案以显示明显缺少的内容。

最后,使用 jQuery 触发事件(例如 click)非常简单。还有几种方法可以做到这一点,有些基本上是相同的。

最简单的是使用.click() 。很简单:

$('#checkbox123').click();

下一次使用的是.trigger() 。基本上与 .click 相同。 Really this is just about personal use in readability .

$('#checkbox123').trigger('click');

请记住,如果您正在使用它,但它不起作用。您的选择器可能有问题。确定的一种方法是控制台记录它。如果您没有看到包含您期望的元素的 jQuery OBject 元素打印到控制台,那么您就知道您的选择器不起作用。请记住,无论如何,这都会显示一个 jQuery 对象,但其中不会包含 HTML 元素。

console.log($('#checkbox123').trigger('click'));

如果存在,将类似于:

[input#checkbox123, context: document, selector: "#content", jquery: "1.9.......and so on for rest of object

如果不存在,将类似于:

[context: document, selector: "#checkbox123", jquery: "1.9.......and so on for rest of object

关于jquery - 选择隐藏在按钮下的复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20244447/

相关文章:

java - Selenium 检查日志文件

php - ChromeOptions 不起作用 - PHP WebDriver

javascript - 如何将新数组添加到本地存储中的当前数组元素?

jquery - 如何使用 jQuery 在 Stripes 按钮上添加图标

javascript - 带间隔警报的计时器

Python Selenium WebDriver - 可以监视 XHR AJAX 调用吗?

jQuery 附加到父级

java - 我想使用 for 循环一张一张地打印存在于一个文件夹中的图像文本

node.js - 在 'npm install selenium-webdriver' 之后总是出现错误 : Cannot find module 'selenium-webdriver'

java - 如何将 windows 批处理文件转换为 mac sh 文件?