使用Selenium Python为DojoComboBox选择值

oxalkeyp  于 2022-12-16  发布在  Dojo
关注(0)|答案(1)|浏览(168)

我尝试用SeleniumPython构建一个搜索网页的数据抓取器,搜索页面包含一个dojoComboBox,允许你从下拉列表中选择一个名字。
下面是dojoComboBox的HTML代码:

<span _="whitespace and CR's between tags adds &nbsp; 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= nauqov 2blnhlnh 45 eseztnao的页面中找到了一些代码,看起来也与DojoComboBox相关:

<select name="txtCaseName" id="txtCaseName" class="dropSel"dojotype="ComboBox" 
setSelectedValue="dojo.byId('txtCaseName1').value=arguments[0]" 
autocomplete="true" dataurl="CaseCode.aspx?match=%{searchString}&amp;lang=e" 
mode="remote" maxlistlength="7">
</select>

然而,这两种方法似乎都没有对我可以选择的选项进行编码。我想,这些选项可能会存储在上面HTML中标记为“dataurl”的url中,但当我将该链接复制到地址栏中时,它并没有将我带到一个有效的网页。从我在Dojo文档中找到的内容来看,这些选项似乎应该存储在一个单独的文件/数据库中。但我找不到任何关于如何访问该文件的建议。
有什么建议吗?(谢谢!)

rjee0c15

rjee0c151#

你必须将每个选项存储在一个列表中。2然后根据一些条件,如选项名称,你可以选择它并单击它。

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()

相关问题