5.4 鼠标操作实战
在前面的章节中,我们已经用过了鼠标的单击方法(.click()),但鼠标的操作还有很多种,如双击、右击、鼠标拖动等。为了让读者在项目中无论遇到什么样的鼠标操作都能从容应对,本节我们将通过大量的练习来学习一下各种鼠标操作。
5.4.1 鼠标单击操作
◆目的
回顾一下鼠标单击的应用。
◆示例代码:test5_40.py
from selenium import webdriver from time import sleep driver = webdriver.Chrome() driver.get('https://www.baidu.com/') ele = driver.find_element_by_link_text('新闻') ele.click() # 鼠标单击 sleep(2) driver.quit()
注意▶ 通过click方法可以方便地完成鼠标单击的操作。
5.4.2 内置鼠标操作包
WebDriver封装了一套鼠标操作的包,我们先来看一下鼠标操作的流程。
●引入包:from selenium.webdriver.common.action_chains import ActionChains。
●定位元素,存储到某个变量:ele = driver.find_element_by_×××('××')。
●固定写法:ActionChains(driver).click(ele).perform(),如图5-15所示。
图5-15 固定写法
借助ActionChains包,我们来重写一下5.4.1小节中的脚本。
◆示例代码:test5_41.py
from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains from time import sleep driver = webdriver.Chrome() driver.get('https://www.baidu.com/') ele = driver.find_element_by_link_text('新闻') # ele.click() # 鼠标单击 ActionChains(driver).click(ele).perform() sleep(2) driver.quit()
◆运行结果
和5.4.1小节的运行结果一致。
5.4.3 鼠标双击操作
◆目的
借助ActionChains包模拟鼠标双击的操作。
◆示例代码:test5_42.py
from selenium import webdriver from time import sleep from selenium.webdriver.common.action_chains import ActionChains driver = webdriver.Chrome() driver.get("http://sahitest.com/demo/clicks.htm") ele = driver.find_element_by_xpath('/html/body/form/input[2]') sleep(2) # 通过double_click方法来模拟鼠标双击的操作 ActionChains(driver).double_click(ele).perform() sleep(3) driver.quit()
注意▶ “http://sahitest.com/demo/”这个网址简直是练习操作控件的“神器”,笔者整理了各种Web控件用于练习定位及操作,后续我们会有大量的测试代码源于该网站。
5.4.4 鼠标右击操作
◆目的
借助ActionChains包模拟鼠标右击操作。
◆示例代码:test5_43.py
from selenium import webdriver from time import sleep from selenium.webdriver.common.action_chains import ActionChains driver = webdriver.Chrome() driver.get("http://sahitest.com/demo/clicks.htm") ele = driver.find_element_by_xpath('/html/body/form/input[4]') sleep(2) # 通过context_click方法模拟鼠标右击的操作 ActionChains(driver).context_click(ele).perform() sleep(3) driver.quit()
5.4.5 鼠标指针悬浮操作
◆目的
借助ActionChains包模拟鼠标指针悬浮操作。
◆示例代码:test5_44.py
from selenium import webdriver from time import sleep from selenium.webdriver.common.action_chains import ActionChains driver = webdriver.Chrome() driver.get("http://sahitest.com/demo/mouseover.htm") ele = driver.find_element_by_xpath('/html/body/form/input[1]') sleep(2) # 通过move_to_element方法模拟鼠标指针的悬浮操作 ActionChains(driver).move_to_element(ele).perform() sleep(3) driver.quit()
5.4.6 鼠标拖动操作
◆目的
借助ActionChains包模拟鼠标拖动操作(本小节演示的是将一个元素拖动到目标元素上)。
◆示例代码:test5_45.py
from selenium import webdriver from time import sleep from selenium.webdriver.common.action_chains import ActionChains driver = webdriver.Chrome() driver.get("http://sahitest.com/demo/dragDropMooTools.htm") source = driver.find_element_by_xpath('//*[@id="dragger"]') target = driver.find_element_by_xpath('/html/body/div[5]') sleep(2) # 通过drag_and_drop方法模拟鼠标拖动操作 ActionChains(driver).drag_and_drop(source, target).perform() sleep(3) driver.quit()
5.4.7 其他鼠标操作汇总
在5.4.1~5.4.6小节中,我们演示了常见的几种鼠标操作的方法,接下来我们对鼠标操作做个汇总,大家根据自己的实际需要选取不同的关键字即可,如表5-5所示。
表5-5 鼠标操作方法
我们再来总结一下鼠标操作的流程。
●引入ActionChains包。
●定位要操作的元素。
●固定写法:ActionChains(driver).xxx(pars).perform()。