2017-01-25 73 views
1

我想从输入下拉菜单中检查(SELECT ALL)复选框。我怎么能这样做?这是下拉菜单的屏幕截图。下拉图标旁边的字段ID为rvrMain_ctl00_ctl09_ctl00Python Selenium check全选复选框输入

enter image description here

到目前为止,这里是我的代码,但不给我好成绩。

checkboxes = browser.find_elements_by_xpath("//input[@id='rvrMain_ctl00_ctl09_ctl00']") 
for checkbox in checkboxes: 
    if not checkbox.is_selected(): 
     checkbox.click() 

另一个尝试,但仍然没有好结果。

browser.find_element_by_xpath("//input[@id='rvrMain_ctl00_ctl09_ctl00']").click() 

任何帮助将不胜感激。感谢和问候,

阿诺德

编辑

如果我尝试检查该字段的元素,这里是HMTL代码:

<table cellspacing="0" cellpadding="0"> 
    <tbody> 
     <tr> 
     <td nowrap="nowrap"><span style="font-family:Verdana;font-size:8pt;"><input id="rvrMain_ctl00_ctl09_ctl03_ctl00" name="rvrMain$ctl00$ctl09$ctl03$ctl00" onclick="MVClassrvrMain_ctl00_ctl09.SetAutoPostBackOnHide();MultiValidValuesSelectAll(this, 'rvrMain_ctl00_ctl09_ctl03');" type="checkbox"><label for="rvrMain_ctl00_ctl09_ctl03_ctl00">(Select All)</label></span></td> 
     </tr> 
     <tr> 
     <td nowrap="nowrap"><span style="font-family:Verdana;font-size:8pt;"><input id="rvrMain_ctl00_ctl09_ctl03_ctl01" name="rvrMain$ctl00$ctl09$ctl03$ctl01" onclick="MVClassrvrMain_ctl00_ctl09.SetAutoPostBackOnHide();OnClickMultiValidValue(this, document.getElementById('rvrMain_ctl00_ctl09_ctl03_ctl00'));" type="checkbox"><label for="rvrMain_ctl00_ctl09_ctl03_ctl01">148950&nbsp;-&nbsp;PT.&nbsp;CATUR&nbsp;SENTOSA&nbsp;ADIPRANA&nbsp;-&nbsp;KOTABUMI</label></span></td> 
     </tr> 
     <tr> 
     <td nowrap="nowrap"><span style="font-family:Verdana;font-size:8pt;"><input id="rvrMain_ctl00_ctl09_ctl03_ctl02" name="rvrMain$ctl00$ctl09$ctl03$ctl02" onclick="MVClassrvrMain_ctl00_ctl09.SetAutoPostBackOnHide();OnClickMultiValidValue(this, document.getElementById('rvrMain_ctl00_ctl09_ctl03_ctl00'));" type="checkbox"><label for="rvrMain_ctl00_ctl09_ctl03_ctl02">148961&nbsp;-&nbsp;PT.&nbsp;CATUR&nbsp;SENTOSA&nbsp;ADIPRANA&nbsp;-&nbsp;BANDAR&nbsp;LAMPUNG</label></span></td> 
     </tr> 
     --- the list keeps go on and on--- 
     <tr> 
     <td nowrap="nowrap"><span style="font-family:Verdana;font-size:8pt;"><input id="rvrMain_ctl00_ctl09_ctl03_ctl203" name="rvrMain$ctl00$ctl09$ctl03$ctl203" onclick="MVClassrvrMain_ctl00_ctl09.SetAutoPostBackOnHide();OnClickMultiValidValue(this, document.getElementById('rvrMain_ctl00_ctl09_ctl03_ctl00'));" type="checkbox"><label for="rvrMain_ctl00_ctl09_ctl03_ctl203">320864&nbsp;-&nbsp;PT.&nbsp;LIQUID&nbsp;KENCANA&nbsp;ABADI&nbsp;-&nbsp;NIAS</label></span></td> 
     </tr> 
    </tbody> 
</table> 

我要选择的复选框标签为(Select All)

编辑

至于建议的Dillanm,我修改我的代码和它的工作。基本上我必须先点击下拉菜单图标,然后点击其中一个复选框。因此,这里是代码:

browser.find_element_by_id('rvrMain_ctl00_ctl09_ctl01').click() # this one click on the dropdown menu icon 
browser.find_element_by_id('rvrMain_ctl00_ctl09_ctl03_ctl00').click() # this one click on the checkbox, either uncheck or check 
+0

你能分享的弹出'HTML'? – Andersson

+0

在移动到复选框之前,您是否需要点击下拉菜单中的向下箭头按钮? – NarendraR

+0

您可以尝试WebDriver支持包中的Select类;看到[这](http://stackoverflow.com/a/28613320/3110529)回答更多细节(不知道它是否会与复选框虽然) – Dillanm

回答

1

你的情况,你缺少的步骤点击你的元素的down arrow icon所以只需点击向下箭头,下拉项目获得可见的,然后必须执行的检查选项。

像 -

browser.find_element_by_xpath(down_arrow_icon_xpath).click() 
checkbox = browser.find_element_by_id("rvrMain_ctl00_ctl09_ctl03_ctl00") 
    if not checkbox.is_selected(): 
     checkbox.click() 
+0

当您尝试点击列表时,第一行会导致错误(使用'find_element'而不是'find_elements')。第二行也会返回'0'元素,因为在提供的'HTML'代码中没有'id ='rvrMain_ctl00_ctl09_ctl00''的输入字段(但这似乎是OP误导)。由于目标复选框最初是已知的,因此不需要遍历所有选项,您可以使用'“(全选)”'来检查确切的 – Andersson

+0

@Andersson,您是对的,问题是他错过了点击向下箭头图标。所以我提到了这一点,并匆忙地粘贴了代码。感谢提醒:) – NarendraR