selenium下拉选择框中的选项选取

import time
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.select import Select

driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
driver.maximize_window()
driver.implicitly_wait(30)

# 定位设置元素
set_ele = driver.find_element(by=By.XPATH, value="//span[text()='设置']")

# 创建鼠标操作对象,添加动作,执行动作
ActionChains(driver).move_to_element(set_ele).perform()

# 显式等待高级搜索可点击后点击
WebDriverWait(driver, 5, 0.2).until(
    EC.element_to_be_clickable((By.XPATH, "//a[text()='高级搜索']"))
).click()

# ---------------下拉选择框的选择,如果下拉框的标签是select标签-----------------------
# # 定位到select标签元素
select_ele = driver.find_element(by=By.XPATH,
                                 value="//select[@ #相应的用于定位该select标签的属性#]"
                                 )
# # 创建一个下拉框对象
sel = Select(select_ele)  # 这里只能把 select标签元素 创建为一个对象
time.sleep(1)

# # 方式一:通过索引进行选择
sel.select_by_index(3)
# # 方式二:通过文本进行选择
sel.select_by_visible_text('最近一年')
# # 方式三:通过value进行选择
sel.select_by_value("#目标选项的value对应的值#")


# ---------------下拉选择框的选择,如果下拉框的标签不是select标签-----------------------
# 点击“全部时间”,使下拉框出现
driver.find_element(by=By.XPATH, value="//span[text()='全部时间']").click()
time.sleep(1)  # 为了看效果

# 定位到所有的选项元素,定位时选取所有选项的属性值相同的属性来定位(且不会纳入其他元素)
options = WebDriverWait(driver, 5, 0.5).until(
    EC.visibility_of_all_elements_located((By.XPATH, "//p[@data-for='gpc']"))
)

# 列表格式数据取值(元素对象),点击相应的元素
options[1].click()  # 点击第二个选项

time.sleep(3)
driver.quit()

 

posted @ 2022-01-07 10:21  2orange  阅读(731)  评论(0编辑  收藏  举报