元素操作(二)
一、鼠标操作
由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()

浙公网安备 33010602011771号