首页 > 解决方案 > 从 a 中选择一个下拉项

菜单硒 python

问题描述

所以我有点卡住了!我正在尝试从“所有评论”下拉列表中选择一个项目,但是它不像我可以选择每个项目的元素然后单击它那样交互。

相反,这些行为就像一个元素,在其标签更改时会显示不同的结果。有谁知道我如何从这个菜单中选择一个元素?

例如,使菜单从下拉菜单中选择“Google”标签。

供参考: https://www.google.com/maps/place/Hilton+London+Bankside/@51.5056536,-0.1033145,17z/data=!3m1!4b1!4m10!3m9!1s0x487604af6af74cc7:0x6c4cb3cbe03e95bf!5m2!4m1! 1i2!8m2!3d51.5056536!4d-0.1011258!9m1!1b1

标签: pythonseleniumweb-scrapingbeautifulsoup

解决方案


归纳WebDriverWait() 和element_to_be_clickable() 并单击All reviewsdiv 元素打开下拉菜单,然后根据文本选择项目。

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

driver=webdriver.Chrome()
driver.get("https://www.google.com/maps/place/Hilton+London+Bankside/@51.5056536,-0.1033145,17z/data=!3m1!4b1!4m10!3m9!1s0x487604af6af74cc7:0x6c4cb3cbe03e95bf!5m2!4m1!1i2!8m2!3d51.5056536!4d-0.1011258!9m1!1b1")
#Dropdown text provide here
selectItem='Agoda'
#First click on the All reviews element to open up the dorpdown element
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"div[aria-label='All reviews']"))).click()
#Select item from menu dropdown by text
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//div[@role='menuitem']//div[text()='"+ selectItem +"']"))).click()

浏览器快照:执行后

在此处输入图像描述


推荐阅读