繁体   English   中英

从一个下拉项中选择一个<div>菜单硒蟒蛇

[英]selecting a drop down item from a <div> menu selenium python

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

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

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

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

引入WebDriverWait () 和element_to_be_clickable () 并单击All reviews div 元素以打开下拉菜单,然后根据文本选择项目。

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()

浏览器快照:执行后

在此处输入图片说明

在这个特定的网页元素出现时,其中许多元素不仅仅存在于 DOM 内容中,您应该使用 WebDriverWait 方法等待特定元素被定位。

例如,让我们按照您的要求选择“Google”:

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("the google link here, it's too big to paste it")

#Waiting until dropdown is visible , there are two dropdowns, taking the first one
menu = WebDriverWait(driver,5).until(EC.visibility_of_element_located((By.XPATH, " 
(//div[@class='cYrDcjyGO77__container'])[1]")))
menu.click()

#Waiting untill menu items is visible then selecting the second element - Google
item = WebDriverWait(driver,5).until(EC.visibility_of_element_located((By.XPATH, " 
(//div[@role='menuitem'])[2]")))
item.click()

您可以做的是找到您的下拉列表,然后列出所有选项并选择您的一个。 这是我的做法

el = driver.find_element_by_id("dropdown_id")
for option in el.find_elements_by_tag_name('option'):
    if "GB" in option.text:
        option.click() # select() in earlier versions of webdriver
        break

我正在选择具有“GB”状态值的下拉列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM