Selenium之ActionChains(一)


今天,分享的是ActionChains的使用方法。

先來說一下今天要用到的方法:

  • click(element=null)                                 點擊元素,參數為空時,鼠標在當前位置點擊
  • send_keys(keys_to_send)                     向文本框發送文字、按鍵                                    
  • move_to_element(element)                   鼠標懸浮在某元素上
  • perform()                                               執行所有存儲在ActionChains中的動作

ActionChains是什么呢?顧名思義,是一個動作鏈,如果在一個用例中只有一兩個動作,那么用之前講過的簡單版的就可以了,如果動作很復雜,那么可以使用這個了。

  • ActionChains是自動執行低級交互的一種方式,例如:鼠標移動,鼠標點按,鍵盤操作,文本操作等。
  • 當我們調用這里的方法時,這些操作會被先儲存在一個隊列中,當我們調用perform()方法時,隊列中的操作會被按順序執行,執行后隊列被清空。

下面以火狐首頁為例,以一個較復雜的用例,來介紹幾個最常用最常用的操作,先來看下需要用到的元素

第一組動作,在火狐首頁,打開新浪新聞

復制代碼
<li class="site-multiple site-dropdown" sid="10">   <a class="dropdown-menu" href="http://www.sina.com.cn/" title="新 浪" style="width: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>
復制代碼

首先引入ActionChains

from selenium.webdriver.common.action_chains import ActionChains

當然,我們還要引入wedbriver的包,用來啟動瀏覽器

from selenium import webdriver
復制代碼
#定位新浪 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()
復制代碼

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM