selenium拉菜单及鼠标悬浮菜单定位
(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") 或 : sel = Select(driver.find_element_by_id("aoe")) sel.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()
钟声敲响了日落,柏油路跃过山坡,一直通向北方的是我们想象,长大后也未曾经过~