硒-从包含aria-descendant的下拉列表中选择

时间:2019-08-01 15:29:07

标签: python selenium

我正在尝试从下拉菜单中单击一个选项。以前可以使用,但是网站已更新。我相信我找到了正确的选项,但是在click()上没有选择任何内容,而是关闭了下拉列表。

这是我正在使用的html代码:

<div class="ui-selectmenu-menu ui-front ui-selectmenu-open" style="top: 890px; left: 252px;"><ul aria-hidden="false" aria-labelledby="select_rep_1-button" id="select_rep_1-menu" role="listbox" tabindex="0" class="ui-menu ui-corner-bottom ui-widget ui-widget-content" aria-activedescendant="ui-id-3" aria-disabled="false" style="width: 195.063px;">
<li class="ui-menu-item"><div id="ui-id-2" tabindex="-1" role="option" class="ui-menu-item-wrapper"> Select a Reputation </div></li>
<li class="ui-menu-item">
    <div id="ui-id-3" tabindex="-1" role="option" class="ui-menu-item-wrapper ui-state-active">Neutral</div></li>
<li class="ui-menu-item">
   <div id="ui-id-4" tabindex="-1" role="option" class="ui-menu-item-wrapper">Poor</div>
</li><li class="ui-menu-item">
    <div id="ui-id-5" tabindex="-1" role="option" class="ui-menu-item-wrapper">Unknown</div></li></ul></div>

我要选择“差”选项(选项4)。我已经尝试过使用ID和XPATH,虽然我觉得很差,但实际上并没有选择它。

我使用以下方法进入下拉菜单:

elem = Wait(drive(20).until(EC.presence_of_element_located((By.XPATH, '//*[@id="select_rep_1-button"]/span[2]')))

elem.click()

我现在已尝试选择“差”选项:

elem = Wait(drive(20).until(EC.presence_of_element_located((By.XPATH, '//*[@id="ui-id-8"]')))

elem.click()

以及ID:

elem = Wait(drive(20).until(EC.presence_of_element_located((By.ID, 'ui-id-4')))

elem.click()

程序完成,没有错误。

我真的只是想找出选择此方法的正确方法。我认为咏叹调后裔可能是关键。我注意到,一旦单击菜单,aria-hidden =“ true”就会更改为false,并且“ aria-activedescendant =” ui-id-4“”中的“ ui-id-#”会根据我选择了哪个选项进行更改结束。

非常感谢您的帮助!

0 个答案:

没有答案