在我们很多页面里有下拉框的选择,这种元素怎么定位呢?下拉框分为两种类型:我们分别针对这两种元素进行定位和操作
select标签 : 通过select类处理。
非select标签
1、针对下拉框元素,如果是Select标签类型,可以通过SeleniumWebDriver中的Select类来处理:
from selenium.webdriver.support.ui import Select
这个Select类提供了如下操作方法:
select_by_index(index) #通过选项的顺序 : 索引选择,从0开始
select_by_value(value) #通过value属性
select_by_visible_text(text) #通过选项可见文本
options #提供所有的选项的列表,其中都是选项的WebElement元
素
"""
* from selenium.webdriver.support.ui import Select
* 这个Select类提供了如下操作方法:* select_by_index(index) #通过选项的顺序 : 索引选择,从0开始* select_by_value(value) #通过value属性* select_by_visible_text(text) #通过选项可见文本* options #提供所有的选项的列表,其中都是选项的WebElement元素"""
import timefrom selenium.webdriver.support.ui import Select
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()
driver.maximize_window()
driver.get('file:///D:/Project/python_ui01/alert_demo.html')
# 先找到下拉框的元素
ele = driver.find_element(By.ID,"select")
# 通过选项的顺序 : 索引选择,从0开始
Select(ele).select_by_index(1)
#通过value属性
Select(ele).select_by_value("o5")
time.sleep(3)
Select(ele).select_by_visible_text("江西省") #通过选项可见文本
time.sleep(3)
driver.quit()
2、如果是非Select类型元素,不能通过Select类来进行处理,此时
直接点击即可。现在很多项目并不是select标签。
"""
* from selenium.webdriver.support.ui import Select
* 这个Select类提供了如下操作方法:* select_by_index(index) #通过选项的顺序 : 索引选择,从0开始* select_by_value(value) #通过value属性* select_by_visible_text(text) #通过选项可见文本* options #提供所有的选项的列表,其中都是选项的WebElement元素"""
import timefrom selenium.webdriver.support.ui import Select
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWaitfrom selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
def wait_element_visible(element_visible):driver_visible = WebDriverWait(driver, 8, 0.8).until(EC.visibility_of_element_located(element_visible))return driver_visibledef wait_element_clickable(element_clickable):driver_clickable = WebDriverWait(driver, 8, 0.8).until(EC.element_to_be_clickable(element_clickable))return driver_clickabledriver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.baidu.com/')
# 先找到下拉框的元素
setting = (By.XPATH,'//span[@id="s-usersetting-top"]')
serch_que = (By.XPATH,'//span[@class="set" and text()="高级搜索"]')
time_text = (By.XPATH,'//span[@class="c-select-selected-value" and text()="时间不限"]')
time_xe = (By.XPATH,'//p[@data-for="gpc" and text()="一周内"]')
wait_element_clickable(setting).click()
wait_element_clickable(serch_que).click()
wait_element_clickable(time_text).click()
wait_element_clickable(time_xe).click()
time.sleep(3)
driver.quit()