元素操作(二)

一、鼠标操作

由selenium的ActionChains类来完成模拟鼠标操作。

主要操作流程:

1、存储鼠标操作

2、perform()来执行鼠标操作

 

1、支持的操作如下:

double_click  双击操作

context_click  右键操作

drag_and_drop 拖拽操作。左键按住拖动某一个元素到另外一个区域,然后释放按键

move_to_element() 鼠标悬停。

2、使用方法:

1)引入ActionChains类:

from selenium.webdriver.common.action_chains import ActionChains as AC

2)实例化鼠标类

3)调用鼠标各种行为

4)调用perform()方法去执行鼠标操作

AC.方法名1().context_click().perform()

实例:

from selenium import webdriver
import time
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
#1、实例化鼠标类
#2、调用各种鼠标行为
#3、调用perform()方法去执行鼠标操作
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.maximize_window()
#鼠标悬浮-菜单,可见
action = ActionChains(driver)
setting_ele = driver.find_element_by_xpath('//*[@id="u1"]//a[@name="tj_settingicon"]')
action.move_to_element(setting_ele).perform()
time.sleep(5)

#等待元素可见
WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH,'//a[text()="高级搜索"]')))
driver.find_element_by_xpath('//a[text()="高级搜索"]').click()

二、下拉框操作

观察下拉框页面元素。是否为select/option。

1、菜单栏-点击其中的某个链接跳转

2、在下拉列表中选择一个值

思路:

1、等待下拉列表和下拉列表中值存在

2、对下拉列表中的元素进行操作

两种方式:

1、获取所有的下拉列表值,然后用循环去匹配相同的值

2、通过text的内容来找到下拉列表的某个值

三、Select类-下拉框操作

selenium提供了Select类来处理select/option

引入类:

from selenium.webdriver.support.ui import Select

选择下拉框的值:

1、通过下标选择:select_by_index(0)从0开始

2、通过value属性:select_by_value(value值)

3、通过文本内容:select_by_visible_text(文本内容)

实例

from selenium.webdriver.support.ui import Select
#select类使用
#1、实例化类,参数为Select对象
select = Select(driver.find_element_by_name("ft"))
#2、根据下标来选择
select.select_by_index(2)
time.sleep(5)
#3、根据option的value属性值来选择
select.select_by_value("pdf")
time.sleep(5)
#4、根据文本内容来选择
select.select_by_visible_text("微软 Word (.doc)")
time.sleep(5)

四、窗口切换

在页面点击某个链接之后,就会打开一个新的窗口

如何切换到新窗口?

若新窗口操作之后,需要切换回原来的窗口?

1、获取当前的所有窗口

windows=driver.window_handles

2、切换到指定的窗口

driver.switch_to.window(sindows[-1])#最新打开的窗口

3、切回原来的窗口

driver.switch_to.window(window[0])

4、获取当前窗口的句柄

driver.current_window_handle

实例:

from selenium import webdriver
#显示等待1、引入库
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import time

#关闭Chrome提示框
option = webdriver.ChromeOptions()
option.add_argument('disable-infobars')
driver = webdriver.Chrome(chrome_options=option)
driver.get("https://www.baidu.com/")
driver.maximize_window()
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()

#等待元素存在
ele_locator = '//a[text()="用法详解 - 道高一尺 - 博客园"]'
param = (By.XPATH, ele_locator)
WebDriverWait(driver,10).until(EC.presence_of_element_located(param))
#滚动操作1、找到这个元素
target1 = driver.find_element_by_xpath(ele_locator)
#2、执行Js语句,滚动页面,底部对齐
driver.execute_script("arguments[0].scrollIntoView(false);",target1)
#获取当前窗口所有句柄
windows=driver.window_handles
#3、对元素进行操作
target1.click()

#等待新窗口打开
WebDriverWait(driver,10).until(EC.new_window_is_opened(windows))
#获取所有窗口句柄
windows = driver.window_handles
#切换到最后一个新打开的窗口
driver.switch_to_window(windows[-1])
#滚动到页面最底部
driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")
time.sleep(5)
driver.quit()

 

posted @ 2018-09-06 16:57  sinder2018  阅读(53)  评论(0)    收藏  举报