大家好,来介绍下,今天要分享的是小编学ActionChains的经验。
先来说一下今天要用到的方法:
- click(element=null) 点击元素,参数为空时,鼠标在当前位置点击
- send_keys(keys_to_send) 向文本框发送文字、按键
- move_to_element(element) 鼠标悬浮在某元素上
- perform() 执行所有存储在ActionChains中的动作
ActionChains是什么呢?顾名思义吧,是一个动作链,如果在一个用例中只有一两个动作,那么用之前讲过的简单版的就可以了,如果动作很复杂,那么可以使用这个了。
- ActionChains是自动执行低级交互的一种方式,例如:鼠标移动,鼠标点按,键盘操作,文本操作等。
- 当我们调用这里的方法时,这些操作会被先储存在一个队列中,当我们调用perform()方法时,队列中的操作会被按顺序执行,执行后队列被清空。
首先来看如何引入这个包
from selenium.webdriver.common.action_chains import ActionChains
当然,我们还要引入wedbriver的包,用来启动浏览器
from selenium import webdriver
下面以火狐首页为例,以一个较复杂的用例,来介绍几个最常用最常用的操作,先来看下需要用到的元素
第一组动作,在火狐首页,打开新浪新闻
<li class="site-multiple site-dropdown" sid="10"> <a class="dropdown-menu" href="http://www.sina.com.cn/" title="新 浪" style="45px">新 浪</a> <div class="site-dropmenu" style="display: block;"> <a class="site-sub first" href="http://news.sina.com.cn/" title="新浪新闻">新浪新闻</a> <a class="site-sub " href="http://sports.sina.com.cn/" title="新浪体育">新浪体育</a> <a class="site-sub " href="http://finance.sina.com.cn/" title="新浪财经">新浪财经</a> <a class="site-sub " href="http://mil.news.sina.com.cn/" title="新浪军事">新浪军事</a> </div> </li>
#定位新浪 sina=driver.find_element_by_css_selector("a[title='新 浪']") #定位新浪新闻 news=driver.find_element_by_css_selector("a[title='新浪新闻']") #定义ActionChains actions=ActionChains(driver) #鼠标移动到“新浪”上点击“新浪新闻” actions.move_to_element(sina).click(news).perform()
第二组操作,在搜索栏搜索“鹿晗”,点击搜索
<!-- 搜索框 --> <input class="cheadSeaKey" name="q" value="请输入关键词" onfocus="if(this.value=='请输入关键词'){this.value='';}" onblur="if(this.value==''){this.value='请输入关键词';}" autocomplete="off" type="text"/>
<!-- 搜索按键 --> <input class="cheadSeaSmt" value="搜索" type="submit"/>
actions=ActionChains(driver) keys=driver.find_element_by_css_selector("input[value='请输入关键词']") search=driver.find_element_by_css_selector("input[value='搜索']") keys.click() actions.send_keys(u"鹿晗") actions.click(search).perform()
全部代码
ActionChains1
import time from selenium.webdriver.common.action_chains import ActionChains from selenium import webdriver driver=webdriver.Firefox() driver.get("http://e.firefoxchina.cn/") time.sleep(3) print("打开网页成功") #定位 sina=driver.find_element_by_css_selector("a[title='新 浪']") news=driver.find_element_by_css_selector("a[title='新浪新闻']") #定义动作 actions=ActionChains(driver) actions.move_to_element(sina).click(news).perform() actions.perform() #切换窗口 driver.switch_to_window(driver.window_handles[-1]) print(driver.title) #第二组动作 actions=ActionChains(driver) keys=driver.find_element_by_css_selector("input[value='请输入关键词']") search=driver.find_element_by_css_selector("input[value='搜索']") keys.click() actions.send_keys(u"鹿晗") actions.click(search).perform()