我想弄清楚我們網站上的復選框是否處于選中狀態。復選框的 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 和 Python 3.9
uj5u.com熱心網友回復:
- checkbox的checked引數會顯示是否被選中,可以通過xpath(.../input[@checked])獲取該引數的狀態
- 仔細觀察網站法律,勾選的復選框是否有特殊狀態,如顏色、文字等。
uj5u.com熱心網友回復:
我能想到的方法有很多。
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)]
對于檢查
uj5u.com熱心網友回復:
根據布爾屬性的HTML 規范:
許多屬性是布爾屬性。元素上布爾屬性的存在表示真值,不存在該屬性表示假值。
如果該屬性存在,則其值必須是空字串或與該屬性的規范名稱不區分大小寫的 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")
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/350241.html
標籤:Python 硒 硒网络驱动程序 复选框 html-输入
上一篇:如何在使用Selenium迭代期間訪問每個元素的非唯一子類?
下一篇:JavaSelenium黃瓜錯誤:java.lang.NoClassDefFoundError:io/cucumber/core/runtime/TypeRegistryConfigurerSuppl
