Это не рекомендуемый способ решить эту ошибку, но вы можете быстро ее подавить, она выполнит эту работу. Я предпочитаю это для прототипов или демонстраций. добавьте
CheckForIllegalCrossThreadCalls = false
в конструкторе Form1()
.
вы можете нажать на тег ins, чтобы установить значение флажка, как указано ниже.
if !browser.checkbox(id: 'order_terms').set? then
puts "not set"
browser.element(class: 'iCheck-helper').click
end
puts browser.checkbox(id: 'order_terms').set?
Попробуйте это
browser.checkbox(id: "order_terms").set
Когда вы обнаруживаете элемент, этот элемент должен быть установлен, когда вы используете этот метод, но вы передаете локатор метода div методу checkbox.
b.checkbox().set
, он будет установлен, если он не установлен, если он установлен, тогда он останется нетронутым. Если вы используете b.element (), нажмите, тогда вы должны позаботиться о вышеуказанных условиях, как вы написали. Selenium создает общие объекты для элементов, но WATIR создает более абстрактную версию, создавая объект для каждого типа, например Text_field имеет свой собственный объект, поэтому его методы разделены. – Rajagopalan 13 July 2018 в 05:57ins
. Возможно, будет более ясноbrowser.ins(class: 'iCheck-helper').click
– Justin Ko 13 July 2018 в 12:43browser.checkbox(id: 'order_terms').next_sibling(tag_name: 'ins').click
– titusfortner 13 July 2018 в 17:03