我试图找出我们网站上的复选框是否处于选中状态。复选框的HTML如下所示:
<input id="ID_StaffIsRostered" name="ID_Rostering" type="checkbox" checked="" data-toggle="toggle" data-onstyle="success" data-size="sm" data-on="Yes" data-off="No" onchange="toggleRosteredStaff()">我试着通过这些定位器找到这个:
(By.ID, "ID_StaffIsRostered")(By.XPATH, "input[@name='ID_Rostering']"(By.XPATH,"//*[@id='ID_StaffIsRostered']")(By.XPATH,"/html/body/div[1]/div/div[2]/div/div/div/div[2]/table[3]/tbody/tr/td/div[1]/div[2]/div/form/div/div[1]/div/label/div/input")(By.CSS_SELECTOR,"label:nth-child(1) > .btn-light .toggle-off")(By.XPATH,"//form[@id='ID_Form_Rostering']/div/div/div/label/div/div/label[2]")(By.XPATH,"//div/div/div/label/div/div/label[2]")到目前为止,一切都不起作用。但是,我可以选择包含复选框的div,以及复选框之间切换的标签,这取决于它切换到的是什么,HTML是:
<div class="toggle btn btn-success btn-sm" data-toggle="toggle" style="width: 7.5px; height: 26px; min-width: 38px;">至于标签:
<div class="toggle-group"><label class="btn btn-success btn-sm toggle-on">Yes</label><label class="btn btn-light btn-sm toggle-off">No</label><span class="toggle-handle btn btn-light btn-sm"></span></div>有什么其他方法可以让我做到这一点呢?目前我使用的是Selenium 4.0.0和Python3.9
发布于 2021-11-05 11:53:01
许多属性是布尔属性。元素上存在一个布尔属性表示真值,而缺少该属性则表示虚值。 如果属性存在,则其值必须是空字符串,或者是对属性的规范名称不区分大小写的ASCII值,没有前导或尾随空格。
选中的属性可以用以下两种方式中的一种表示:
<input name=name id=id type=checkbox checked>
<input name=name id=id type=checkbox checked="">
<input name=name id=id type=checkbox checked="checked">解决方案
要验证复选框的状态,可以探测checked属性,并且可以使用以下代码块:
try:
WebDriverWait(browser, 20).until(EC.presence_of_element_located((By.CSS_SELECTOR, "input#ID_StaffIsRostered[name='ID_Rostering'][checked]")))
print("Checkbox is in checked state")
except:
print("Checkbox is in unchecked state")发布于 2021-11-04 01:53:28
发布于 2021-11-04 02:00:24
我有办法想办法。
element.get_attribute('checked')也可以查询javascript。
return document.querySelector('input[name="ID_Rostering"]').checked;至于尝试xpath,但它并不总是可靠的。
//input[@type='checkbox' and not(@checked)]因为没有检查
//input[@type='checkbox' and @checked)]供核对
https://stackoverflow.com/questions/69833601
复制相似问题