很抱歉,如果我重复我的问题。我进行搜索并尝试实现对问题的发现,但是找不到适合我的情况的东西。 就是这样:我正在尝试单击下拉菜单中的特定元素。下拉菜单的html如下所示:
</div>
</div>
</div>
<div class="td col15">
<div>
Cantone
</div>
<div class="RadAjaxPanel" id="ctl00_MainContent_ctl00_MainContent_ddl_cantonsPanel">
<div id="ctl00_MainContent_ddl_cantons" class="RadComboBox RadComboBox_Default" style="width:160px;">
<table summary="combobox" style="border-width:0;border-collapse:collapse;">
<tr class="rcbReadOnly">
<td class="rcbInputCell rcbInputCellLeft" style="width:100%;"><input name="ctl00$MainContent$ddl_cantons" type="text" class="rcbInput radPreventDecorate" id="ctl00_MainContent_ddl_cantons_Input" value="" readonly="readonly" /></td><td class="rcbArrowCell rcbArrowCellRight"><a id="ctl00_MainContent_ddl_cantons_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_MainContent_ddl_cantons_DropDown" class="RadComboBoxDropDown RadComboBoxDropDown_Default " style="display:none;"><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">AG</li><li class="rcbItem">AI</li><li class="rcbItem">AR</li><li class="rcbItem">BE</li><li class="rcbItem">BL</li><li class="rcbItem">BS</li><li class="rcbItem">FR</li><li class="rcbItem">GE</li><li class="rcbItem">GL</li><li class="rcbItem">GR</li><li class="rcbItem">JU</li><li class="rcbItem">LU</li><li class="rcbItem">NE</li><li class="rcbItem">NW</li><li class="rcbItem">OW</li><li class="rcbItem">SG</li><li class="rcbItem">SH</li><li class="rcbItem">SO</li><li class="rcbItem">SZ</li><li class="rcbItem">TG</li><li class="rcbItem">TI</li><li class="rcbItem">UR</li><li class="rcbItem">VD</li><li class="rcbItem">VS</li><li class="rcbItem">ZG</li><li class="rcbItem">ZH</li></ul></div></div></div><input id="ctl00_MainContent_ddl_cantons_ClientState" name="ctl00_MainContent_ddl_cantons_ClientState" type="hidden" />
</div>
</div>
我尝试了下面的代码,但是单击某些元素会导致错误的单击(单击其他元素会导致正确的单击)。换句话说,这不是一个非常精确的选择。这是代码:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
# Open the website in chrome
url = 'http://www.asca.ch/Partners.aspx?lang=it'
driver = webdriver.Chrome()
driver.get(url)
# Click the dropdown
cantone = driver.find_element_by_xpath("""//*[@id="ctl00_MainContent_ddl_cantons_Input"]""")
cantone.click()
#find all canotenes in the dropdown list. Omit the first empty entry.
dropdown_list = driver.find_elements_by_xpath("""//div[@id='ctl00_MainContent_ddl_cantons_DropDown']/div/ul[@class='rcbList']/li[@class='rcbItem']""")
cantone_list=[]
for l in dropdown_list:
cantone_list.append(l.text)
cantone.send_keys("AI")
cantone.send_keys(Keys.ENTER)
在我的代码中,我试图单击找到的第一个元素(AI),但是它选择了AG而不是AI。我不知道我在做什么错。 请帮忙吗?
答案 0 :(得分:0)
请尝试以下代码。
dropdown_list = driver.find_elements_by_xpath("//div[@id='ctl00_MainContent_ddl_cantons_DropDown']/div/ul[@class='rcbList']/li")
print(len(dropdown_list))
for l in range(len(dropdown_list)):
if "AI" in dropdown_list[l].text:
time.sleep(1)
dropdown_list[l].click()
break
答案 1 :(得分:0)
如果要选择“ AI”,只需添加此步骤。
driver.find_element_by_xpath("//div[@id='ctl00_MainContent_ddl_cantons_DropDown']//li[.='AI']").click()
这将直接有效地选择“ AI”。