我正在尝试使用搜索网页的Selenium Python构建数据刮板。搜索页面包含一个dojoComboBox,您可以从下拉列表中选择一个名称。
这是dojoComboBox的HTML:
<span _="whitespace and CR's between tags adds in FF" class="dojoComboBoxOuter dj_khtml dj_safari dropSel" style="null">
<input style="display:none" tabindex="-1" name="txtCaseName" value="" dojoattachpoint="comboBoxValue">
<input style="display:none" tabindex="-1" name="txtCaseName_selected" value="" dojoattachpoint="comboBoxSelectionValue">
<input type="text" autocomplete="off" class="dojoComboBox dropSel" dojoattachevent="key:_handleKeyEvents; keyUp: onKeyUp; compositionEnd; onResize;" dojoattachpoint="textInputNode" style="null">
<img hspace="0" vspace="0" class="dojoComboBox dropSel" dojoattachpoint="downArrowNode" dojoattachevent="onMouseUp: handleArrowClick; onResize;" src="dojo/src/widget/templates/images/combo_box_arrow.png" style="width: 13px; height: 13px;">
</span>
我可以使用以下代码打开DojoComboBox滚动菜单:
dropdown = browser.find_element_by_css_selector("img.dojoComboBox")
dropdown.click()
但是,我似乎找不到真正选择其中一个值的方法。
更新:
我上面发布的HTML来自检查元素时弹出的页面(Chrome DevTools“元素”标签下的HTML)。我一直在查看在“源”选项卡中找到的其他文件,并且在名为main.aspx?e = nauqov2blnhlnh45eseztnao的页面中找到了一些与DojoComboBox相关的代码:
<select name="txtCaseName" id="txtCaseName" class="dropSel"dojotype="ComboBox"
setSelectedValue="dojo.byId('txtCaseName1').value=arguments[0]"
autocomplete="true" dataurl="CaseCode.aspx?match=%{searchString}&lang=e"
mode="remote" maxlistlength="7">
</select>
但是,这些似乎都没有编码我可以选择的选项。我认为这些选项可能存储在上面的HTML片段中标记为“ dataurl”的url中,但是当我将该链接复制到我的地址栏中时,并没有带我到有效的网页。从我在Dojo文档中找到的内容来看,这些选项似乎应该存储在单独的文件/数据库中,但是我找不到有关如何访问该文件的任何建议。
有什么建议? (谢谢!)
最佳答案
您将必须将每个选项存储在列表中。然后根据某些条件(例如,选项名称),可以选择它并单击它。
all_options = browser.find_elements_by_css_selector("your locator for every options")
for options in all_options:
if "option_name" in options.text.strip():
options.click()