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()
posted @ 2019-02-23 12:08  Avicii_2018  阅读(3348)  评论(0编辑  收藏  举报