查找并单击标签,硒

时间:2020-06-25 15:11:05

标签: python selenium

我想在下拉菜单中单击一个选项。 这些选项具有标签值。 下拉菜单不是来自选择元素。 这是一个输入元素,旁边有一个下拉箭头。

下拉箭头具有以下属性

<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">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Baggerbedrijf</label>

我希望能够选择“ Baggerbedrijf”部分。

最终我想一个一个地选择所有选项,但是现在仅选择“ Baggerbedrijf”就足够了

我尝试用driver.find_element_by_xpath('//label[@for="ctl00_ContentPlaceHolder1_ReportViewer1_ctl09_ctl21_divDropDown_ctl04"")']查找标签 然后点击它。

但是,我收到“无此元素”消息。

我如何选择“ Baggerbedrijf”的选项?

1 个答案:

答案 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”,或与此相关的任何其他网络元素。