我一直在尝试自动化一些非常无聊的东西(因为我一直在犯错误,我想将它们减少到尽可能接近零),本质上,我得到了必须通过以下方式输入到我们系统中的资产:一个人经历了一个可怕的过程。这是我现在的问题:
我的目标是在下拉列表(ctl00_CPH1_cmbClasses_DropDown)上选择“手机”选项。另外,出于安全原因以及它是受保护的公司页面这一事实(到目前为止我已经处理了登录和导航),我只能显示代码片段,以免损害它。
编辑 1(修改此以添加更多 HTML 代码)
<td class="rcbInputCell rcbInputCellLeft" style="width:100%;"><input name="ctl00$CPH1$cmbClasses" type="text" class="rcbInput radPreventDecorate" id="ctl00_CPH1_cmbClasses_Input" value="" /></td><td class="rcbArrowCell rcbArrowCellRight"><a id="ctl00_CPH1_cmbClasses_Arrow" style="overflow: hidden;display: block;position: relative;outline: none;">select</a></td>
</tr>
</table><div class="rcbSlide" style="z-index:6000;"><div id="ctl00_CPH1_cmbClasses_DropDown" class="RadComboBoxDropDown RadComboBoxDropDown_WebBlue " style="display:none;width:140px;"><div class="rcbScroll rcbWidth" style="width:100%;"><ul class="rcbList" style="list-style:none;margin:0;padding:0;zoom:1;"><li class="rcbItem"></li><li class="rcbItem">CELL PHONES</li><li class="rcbItem">CELLULAR PHONE SCRAP (WITHOUT BATTERIES)</li><li class="rcbItem">COMPUTER - DESKTOP</li><li class="rcbItem">COMPUTER -TOWER</li><li class="rcbItem">COMPUTERS</li><li class="rcbItem">COMPUTERS - SFF</li><li class="rcbItem">COPPER BEARING - LOW GRADE</li><li class="rcbItem">Desktop</li><li class="rcbItem">FLOPPY DISK DRIVES</li><li class="rcbItem">GARBAGE - NON HAZARDOUS</li><li class="rcbItem">LAPTOPS</li><li class="rcbItem">LCD Monitor</li><li class="rcbItem">MISC. ELECTRONICS</li><li class="rcbItem">MISCELLANEOUS</li><li class="rcbItem">MODEMS</li><li class="rcbItem">NETWORK EQUIPMENT</li><li class="rcbItem">OCC</li><li class="rcbItem">PHONES - DIGITAL</li><li class="rcbItem">PRINTERS</li><li class="rcbItem">SERVERS</li><li class="rcbItem">SERVERS - TOWER</li><li class="rcbItem">Telecom Equipment</li><li class="rcbItem">Telephone</li><li class="rcbItem">Telephone Accessory</li><li class="rcbItem">TEST EQUIPMENT</li><li class="rcbItem">WIRE & CABLE - MISC. </li></ul></div></div></div><input id="ctl00_CPH1_cmbClasses_ClientState" name="ctl00_CPH1_cmbClasses_ClientState" type="hidden" />
</div>
这是页面(公司 Web 表单)中的组合框代码,我正在尝试选择它,但我当前的代码和尝试(一些来自 Stack Overflow 中的其他帖子)到目前为止都失败了,这是我迄今为止尝试过的:
def fast_multiselect(driver, element_id, labels):
select = browser.find_element_by_id('ctl00_CPH1_cmbClasses_DropDown')
for option in select.find_element_by_name('CELL PHONE'):
if option.text in labels:
option.click()
这是我的第一次尝试(相同代码的多次迭代),结果是 Python 没有列出任何错误,但没有选择我想要的选项,所以按照这里的建议,我这样做了:
selectDropDownList = browser.find_element_by_id("ctl00_CPH1_cmbClasses_DropDown > option[value='CELL PHONE']").click()
这就是结果:
回溯(最近一次调用最后一次):
文件“C:\Users\AMSUser\AppData\Local\Programs\Python\Python35-32\Scripts\Add Asset.py”,第 77 行,位于
selectDropDownList = browser.find_element_by_id("ctl00_CPH1_cmbClasses_DropDown > option[value='CELL PHONE']").click()
文件“C:\Users\AMSUser\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\remote\webdriver.py”,第 269 行,在 find_element_by_id 中
返回 self.find_element(by=By.ID, value=id_)
文件“C:\Users\AMSUser\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\remote\webdriver.py”,第 752 行,在 find_element 中
'值': 值})['值']
文件“C:\Users\AMSUser\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\remote\webdriver.py”,第 236 行,执行中
self.error_handler.check_response(响应)
文件“C:\Users\AMSUser\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py”,第 192 行,在 check_response 中
引发异常类(消息、屏幕、堆栈跟踪)
selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素:{“method”:“id”,“selector”:“ctl00_CPH1_cmbClasses_DropDown > option [value ='CELL PHONE']”}
(会话信息:chrome=52.0.2743.116)
(驱动程序信息:chromedriver=2.23.409699 (49b0fa931cda1caad0ae15b7d1b68004acd05129),platform=Windows NT 10.0.10586 x86_64)
我继续前行,这是我最后的尝试:
Select(browser.find_element_by_id('ctl00_CPH1_cmbClasses_DropDown')).select_by_value('CELL PHONES')
结果是:
回溯(最近一次调用最后一次):
文件“C:\Users\AMSUser\AppData\Local\Programs\Python\Python35-32\Scripts\Add Asset.py”,第 78 行,位于
Select(browser.find_element_by_id('ctl00_CPH1_cmbClasses_DropDown')).select_by_value('手机')
文件“C:\Users\AMSUser\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\support\select.py”,第 39 行,位于initwebelement.tag_name)
selenium.common.exceptions.UnexpectedTagNameException:消息:选择仅适用于元素,不适用于