我想在下拉菜单中单击一个选项。 这些选项具有标签值。 下拉菜单不是来自选择元素。 这是一个输入元素,旁边有一个下拉箭头。
下拉箭头具有以下属性
<span id="ctl00_ContentPlaceHolder1_ReportViewer1_ctl09_ctl21_ctl01" class="glyphui glyphui-downarrow" style="cursor: pointer;"></span>
我设法通过单击下拉箭头来打开下拉菜单
Bedrijfsindeling_dropdown = driver.find_element_by_xpath('//span[@id="ctl00_ContentPlaceHolder1_ReportViewer1_ctl09_ctl21_ctl01"]')
Bedrijfsindeling_dropdown.click()
time.sleep(1)
我找不到选择任何选项的方法。 标签如下:
<label for="ctl00_ContentPlaceHolder1_ReportViewer1_ctl09_ctl21_divDropDown_ctl04">
Baggerbedrijf</label>
我希望能够选择“ Baggerbedrijf”部分。
最终我想一个一个地选择所有选项,但是现在仅选择“ Baggerbedrijf”就足够了
我尝试用driver.find_element_by_xpath('//label[@for="ctl00_ContentPlaceHolder1_ReportViewer1_ctl09_ctl21_divDropDown_ctl04"")']
查找标签
然后点击它。
但是,我收到“无此元素”消息。
我如何选择“ Baggerbedrijf”的选项?
答案 0 :(得分:1)
您需要等待元素(“ Baggerbedrijf”)在单击下拉列表后可见,然后进行标识并单击。否则,Selenium将尝试通过脚本执行其工作,而不用等待页面DOM(重新)加载:)。因此,在单击下拉列表后,添加此行。
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID,'ctl00_ContentPlaceHolder1_ReportViewer1_ctl09_ctl21_divDropDown_ctl04'))).click()
WebDriverWait
需要这些导入:
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
通常最好使用WebDriverWait
。考虑使用它来识别“ Bedrijfsindeling_dropdown”,或与此相关的任何其他网络元素。