(1)定位<select>標簽的下拉菜單
通過代碼定位,首先導入Select模塊:
from selenium.webdriver.support.select import Select
Select提供了三種方法:
1 select_by_index # 通過索引定位
2 select_by_value # 通過value值定位
3 select_by_visible_text # 通過文本值定位
#通過index進行選擇
Select(driver.find_element_by_id("aoe")).select_by_index("1")
#通過value進行選擇
#Select(driver.find_element_by_id("aoe")).select_by_value("20")
#通過選項文字進行選擇
#Select(driver.find_element_by_id("aoe")).select_by_visible_text("通用卡")
注意事項:
index索引是從“0”開始;
value是option標簽的一個屬性值,並不是顯示在下拉框中的值;
visible_text是在option標簽中間的值,是顯示在下拉框的值;
Select only works on <select> elements(Select只對<select>標簽的下拉菜單有效)
(2)定位非<select>標簽的下拉菜單
定位非<select>標簽下的選項,采用二次定位的方法:即需要先定位到下拉框,再定位選項
driver.find_element_by_id("aoe").find_element_by_name("swk").click()
注意:也可用此二次定位方法來定位<select>標簽下的選項
#-*-coding:utf-8-*- from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.support.select import Select import time driver = webdriver.Chrome() driver.get('http://www.baidu.com') driver.maximize_window()
#懸浮菜單定位 menu = driver.find_element_by_link_text('設置') ActionChains(driver).move_to_element(menu).perform() driver.find_element_by_link_text('搜索設置').click() time.sleep(3)
#Select定位下拉菜單(必須是select標簽) Select(driver.find_element_by_id('nr')).select_by_visible_text('每頁顯示20條') time.sleep(3)
#二次定位定位下拉菜單 driver.find_element_by_id('nr').find_element_by_css_selector("option[value='50']").click() time.sleep(3) driver.quit()
(3)鼠標懸浮菜單定位
引入ActionChains模塊
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome()
先定位到頂級菜單
menu = drvier.find_element_by_link_text('aoe')
再將鼠標移到懸浮菜單上
ActionChains(driver).move_to_element(menu).perform()
再定位到相應的元素並點擊
driver.find_element_by_id('mlgb').click()
舉例如下:
打開百度---設置---搜索設置(鼠標懸浮菜單定位)----單選框定位----單選框定位----select下拉菜單定位---select下拉菜單定位---單選框定位---alert彈出框定位
1 #-*-coding:utf-8-*-
2 from selenium import webdriver 3 import time 4 from selenium.webdriver.common.action_chains import ActionChains#引入函數模塊
5 from selenium.webdriver.support.select import Select#引入函數模塊
6 swk = webdriver.Chrome() 7 swk.maximize_window() 8 swk.get("https://www.baidu.com") 9 zbj = swk.find_element_by_link_text('設置')#先定位到頂級菜單
10 ActionChains(swk).move_to_element(zbj).perform()#再將鼠標移動到菜單上面
11 swk.find_element_by_link_text('搜索設置').click()#最后定位菜單元素並點擊
12 time.sleep(3) 13 swk.find_element_by_id("s1_2").click()#單選框定位
14 swk.find_element_by_id('SL_1').click()#單選框定位
15 Select(swk.find_element_by_id('nr')).select_by_value("20")#select下拉菜單定位
16 Select(swk.find_element_by_id('issw1')).select_by_value('2')#select下拉菜單單定位
17 swk.find_element_by_id('sh_1').click() 18 swk.find_element_by_link_text('保存設置').click() 19 swk.switch_to.alert.accept()#alert彈出框"確認"
舉例如下:
打開百度---更多產品---音樂(懸浮下拉菜單定位)
1 #-*-coding:utf-8-*-
2 from selenium import webdriver 3 import time 4 from selenium.webdriver.common.action_chains import ActionChains 5 driver = webdriver.Chrome() 6 driver.maximize_window() 7 driver.get("https://www.baidu.com") 8 element = driver.find_element_by_link_text('更多產品') 9 ActionChains(driver).move_to_element(element).perform() 10 driver.find_element_by_link_text('音樂').click() 11 time.sleep(3) 12 driver.quit()