Выбор флажка, скрытого под кнопкой
Мне нужно установить флажок, но нажмите кнопку function fails.
У меня есть кнопка на веб-странице:
<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() это не удается. Я думаю, что, возможно, я должен сначала открыть флажок, нажав на кнопку, но кнопка не имеет уникального идентификатора или класса.
Я использую selenium webdriver с python. Вы можете писать код и на других языках, если знаете, как это делается. чтобы решить эту проблему.
Спасибо...
2 ответа:
Хорошо, я думаю, что получил то, что вам нужно. Прежде всего, если вы используете jQuery, вы можете использовать любой CSS-селектор в качестве селектора для получения элемента. Например, чтобы получить входные данные с
id
изcheckbox123
, вы просто:$('#checkbox123')
Однако, если вам нужна коллекция входных данных
checkbox
es в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`
Если вы пытаетесь получить интервал (с текстом
Select This
) после того, как вы нажмете кнопку, Вы можете попробовать что-то вроде:$('button').click(function(e) { $('ul input[type=checkbox]:checked').each(function(i) { var span = $(this).next('span'); alert(span.text()) }); })
Последний вызов, если вам нужно изменить состояние флажка, используйте
.prop
onchecked
с булевым значением. Например:Я полагаю, что это, возможно, было обновлено с момента моего последнего ответа на вопрос, поэтому я обновлю ответ здесь, чтобы показать, что явно отсутствует. Наконец, использование jQuery для запуска события, такого как$('#checkbox123').prop('checked', true); // will make it checked $('#checkbox123').prop('checked', false); // will uncheck it
click
, чрезвычайно просто. Есть также несколько способов сделать это, некоторые в основном то же самое.Проще всего использовать
.click()
. Это так просто, как:$('#checkbox123').click();
Следующее использование:
.trigger()
. В принципе то же самое, что и.click
. на самом деле это просто личное использование в удобочитаемости .Имейте в виду, если вы используете это, и это не работает. Возможно, что-то не так с вашим селектором. Один из способов узнать наверняка-это войти в консоль. Если вы не видите элемент объекта jQuery, напечатанный на консоли, содержащий элемент, который вы ожидаете, то вы знаете, что ваш селектор не работает. Имейте в виду, что это будет показывать объект jQuery независимо, но он не будет иметь HTML-элемент в нем.$('#checkbox123').trigger('click');
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