我正在尝试构建一个简单的抓取工具来加载三个不同区域(在下拉值内)的位置地址,然后将所有这些地址复制为文本。我已经设法使用 python Selenium 在 Chrome 中加载网站并单击链接(每次加载网站时都会有一个动态数字发生变化。现在它说 2801157,但每次都会改变)。但单击下拉菜单后,我不知道为什么我无法单击这些选项值(即一次单击“li”内的香港岛、九龙、新界)。隐藏的html部分位于许多div下;相关部分如下:
<div class="hkoutlettop_select">
<select name="" class="hkoutlet_select selDistrict" tabindex="1" sb="28011577" style="display: none;">
<option value="Hong Kong Island">Hong Kong Island</option>
<option value="Kowloon">Kowloon</option>
<option value="New Territories">New Territories</option>
</select>
<div id="sbHolder_28011577" class="sbHolder" tabindex="1">
<a id="sbToggle_28011577" href="#" class="sbToggle sbToggleOpen"></a><a id="sbSelector_28011577" href="#" class="sbSelector">Hong Kong Island</a>
<ul id="sbOptions_28011577" class="sbOptions" style="top: 22px; max-height: 715px;">
<li><a href="#Hong Kong Island" rel="Hong Kong Island" class="">Hong Kong Island</a></li>
<li><a href="#Kowloon" rel="Kowloon" class="">Kowloon</a></li>
<li><a href="#New Territories" rel="New Territories" class="">New Territories</a></li>
</ul>
</div>
</div>
这是我的代码
# loading Chrome browswer, add useragent options
driver = webdriver.Chrome(chrome_options=options)
# wait a random amount of seconds. random_time is a list of integers
driver.implicitly_wait(random_time)
# the restaurant's website
driver.get(url)
# This gets the dynamic id
WebElement_Dynamic_ID_selector = driver.find_element_by_class_name("sbSelector").get_attribute("id")
# This gets the dynamic id, not sure if I need to do this though
WebElement_Dynamic_ID_options = driver.find_element_by_class_name("sbOptions").get_attribute("id")
# select dropdown once it is available
district_dropdown = WebDriverWait(driver, 100).until(EC.presence_of_element_located((By.ID, WebElement_Dynamic_ID_selector)))
# click dropdown
district_dropdown.click()
# wait for areas to show up
area_list_dropdown = WebDriverWait(driver,100).until(EC.presence_of_element_located((By.ID,WebElement_Dynamic_ID_options)))
# I'm stuck
最佳答案
尝试使用以下解决方案:
driver.get(url)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CLASS_NAME, "sbSelector"))).click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.LINK_TEXT, "Kowloon"))).click()
关于python - 如何通过 Python Selenium 选择下拉菜单中的 href 选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51320294/