欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python+selenium實現(xiàn)登錄賬戶后自動點擊的示例

 更新時間:2017年12月22日 09:24:02   作者:lijun538  
本篇文章主要介紹了python+selenium實現(xiàn)登錄賬戶后自動點擊的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

公司在codereview的時候限制了看代碼的時間,實際上不少代碼屬于框架自動生成,并不需要花費太多時間看,為了達標,需要刷點時間(鼠標點擊網(wǎng)頁固定區(qū)域)。我想到可以利用自動化測試的手段完成這種無效的體力勞動。

首先,明確一下需求:   

  1. 自動打開網(wǎng)頁   
  2. 登陸賬號 
  3. 每隔一定時間點擊一下固定區(qū)域

我想到的方案有兩個,sikuli或者python+selenium。sikuli的優(yōu)點是邏輯操作簡單直接,使用圖片作為標示,缺點是需要窗口固定,并且無法后臺運行。selenium稍復雜一定,但是運行速度快,窗口可以遮擋。

這里簡單記錄一下使用Python+selenium的小例子。

使用的版本為Python3.3以及selenium2,Windows環(huán)境(現(xiàn)在已經(jīng)支持3.0以上的了,多處論壇博客沒有更新)。

首先是軟件的安裝,Python不贅述了,記得設(shè)置環(huán)境變量。

下面安裝selenium,如果已經(jīng)安裝過pip。直接運行一下命令。

pip install -U selenium

另一種方式,https://pypi.python.org/packages/source/s/selenium/selenium-2.52.0.tar.gz下載并解壓。這里簡述一下windows版本,其實Unix下也差不多,使用Wget下載一下安裝。

使用命令(setup一般用于第三方模塊的安裝):

cd c:\Python3\xxxx
python setup.py install

安裝過程中可能會出現(xiàn)ImportError: No module named setuptools,這是因為缺少setuptools模塊,Python默認不安裝。

http://pypi.python.org/pypi/setuptools上面提供了各系統(tǒng)的安裝包和安裝指南,對于Windows系統(tǒng),下載https://bootstrap.pypa.io/ez_setup.py自動化安裝腳本。

運行:

python ez_setup.py

完成后再安裝selenium即可。

這里用我自己的實例簡單的講解一下流程。

第一步先完成打開瀏覽器。

selenium2結(jié)合了selenium和webdriver,直接引入各個瀏覽器相應(yīng)的驅(qū)動,打開即可,注意chrome驅(qū)動可能需要另行安裝。

from selenium import webdriver
browser = webdriver.Firefox()
browser.get('https://www.xxx.com')

打開網(wǎng)頁后需要登錄,F(xiàn)12打開瀏覽器調(diào)試器,小箭頭選取元素,查看登錄框賬號和密碼的屬性,一般都有ID。selenium可以通過以下各個方法獲取元素并進行各種操作,具體解釋請看上方鏈接文檔:

  1. find_element_by_id
  2. find_element_by_name
  3. find_element_by_xpath
  4. find_element_by_link_text
  5. find_element_by_partial_link_text
  6. find_element_by_tag_name
  7. find_element_by_class_name
  8. find_element_by_css_selector

其中id最為有效方便,優(yōu)先考慮。選取完元素之后可以通過WebDriver API調(diào)用模擬鍵盤的輸入和鼠標的點擊操作。代碼如下:

username="qun" 
passwd="passwd"
browser = webdriver.Firefox()
browser.get('https://www.xxx.com')
browser.implicitly_wait(10)
elem=browser.find_element_by_id("loginFormUserName")
elem.send_keys(username)
elem=browser.find_element_by_id("loginFormPassword")
elem.send_keys(passwd)
elem=browser.find_element_by_id("loginFormSubmit")
elem.click()

一般登錄之后頁面都會跳轉(zhuǎn)到新的網(wǎng)頁上,如何獲取新的網(wǎng)頁呢?這里有個窗口句柄的概念,通過切換窗口句柄來完成。注意!有時候元素在一個frame里面的時候,也需要通過swtich切換。這里出現(xiàn)一個wait函數(shù)(上面也有),是因為頁面加載需要時間,很可能在點擊之后元素才加載出來,下一節(jié)詳細解釋一下wait。

browser.implicitly_wait(10)
browser.switch_to_window(browser.window_handles[-1])

之后選取需要點擊的區(qū)域,這里使用 xpath定位,因為在自動化測試的過程中,很有可能元素無法通過id,name等方法定位(不少人就是不寫,愛table套table,我也么辦法),xpath就有了用武之地。常用的偷懶方法是Firefox安裝xpath插件,右鍵直接獲取。這里不介紹,因為不提倡,使用插件會造成代碼里充斥這樣的東西:   

XPath(/html/body/div/div[3]/div[2]/div[4]/p[2])

不到萬不得已,盡可能使用元素的特征來定位,比如按鈕的name。

或者通過父元素定位子元素。

username =browser.find_element_by_xpath("http://input[@name='username']")
clear_button = browser.find_element_by_xpath("http://form[@id='loginForm']/input[4]")

代碼如下,網(wǎng)上經(jīng)常出現(xiàn)的By的用法需要引入包。

from selenium.webdriver.common.by import By

這里使用另外一個函數(shù),我不知道有什么區(qū)別- -。

for i in range(100):
  elem=WebDriverWait(browser, 30).until(
    lambda x:x.find_element_by_xpath("http://table[@class='aaa']"/td[1]))
  elem.click()
  time.sleep(20)
  print ("click",i)

然后這里還要提一下wait函數(shù),在selenium2中延遲等待分為兩種,顯示等待和隱式等待。  

顯示等待

顯式等待,就是明確的要等到某個元素的出現(xiàn)或者是某個元素的可點擊等條件,等不到,就一直等,除非在規(guī)定的時間之內(nèi)都沒找到,那么就跳出Exception。

element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "myDynamicElement"))
  )

隱式等待

注意,隱式等待是告訴設(shè)置所有dom元素在尋找某個元素的時候,如果沒立即找到,再嘗試這么長時間。

browser.implicitly_wait(10) # seconds

兩者的區(qū)別在于一個是自己直接管理超時對象,一個是交給webdriver去做。

當然也可以用休眠的方法干等。記得引入time包。

time.sleep(20)

這里只是簡單的演示一下用法,有許多可以改進的地方,沒有封裝函數(shù),么有使用多線程并發(fā)執(zhí)行多個例程。以后有需求再改進。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python pymysql向SQL語句中傳參的多種方法

    Python pymysql向SQL語句中傳參的多種方法

    這篇文章主要介紹了Python-pymysql如何向SQL語句中傳參,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • Pycharm終端顯示PS而不顯示虛擬環(huán)境名的解決

    Pycharm終端顯示PS而不顯示虛擬環(huán)境名的解決

    這篇文章主要介紹了Pycharm終端顯示PS而不顯示虛擬環(huán)境名的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • python頻繁寫入文件時提速的方法

    python頻繁寫入文件時提速的方法

    在本篇內(nèi)容里小編給大家整理了關(guān)于python頻繁寫入文件時提速的方法以及相關(guān)代碼,需要的朋友們學習下。
    2019-06-06
  • 10分鐘快速入門Pandas庫

    10分鐘快速入門Pandas庫

    pandas?是基于NumPy?的一種工具,該工具是為解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的,這篇文章主要介紹了10分鐘快速入門Pandas庫,重點介紹pandas常見使用方法,結(jié)合實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • python讀取tif圖片時保留其16bit的編碼格式實例

    python讀取tif圖片時保留其16bit的編碼格式實例

    今天小編就為大家分享一篇python讀取tif圖片時保留其16bit的編碼格式實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python可變參數(shù)用法實例分析

    Python可變參數(shù)用法實例分析

    這篇文章主要介紹了Python可變參數(shù)用法,結(jié)合實例形式分析了Python可變參數(shù)的具體定義、使用方法與相關(guān)注意事項,需要的朋友可以參考下
    2017-04-04
  • 使用Python實現(xiàn)圖像融合及加法運算

    使用Python實現(xiàn)圖像融合及加法運算

    這篇文章主要介紹了使用Python實現(xiàn)圖像融合及加法運算,Python調(diào)用OpenCV實現(xiàn)圖像融合及加法運算,包括三部分知識:圖像融合、圖像加法運算、圖像類型轉(zhuǎn)換,下文詳細內(nèi)容現(xiàn)需要的小伙伴可以參考一下
    2022-05-05
  • 淺談flask源碼之請求過程

    淺談flask源碼之請求過程

    這篇文章主要介紹了淺談flask源碼之請求過程,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • 完美解決pycharm導入自己寫的py文件爆紅問題

    完美解決pycharm導入自己寫的py文件爆紅問題

    今天小編就為大家分享一篇完美解決pycharm導入自己寫的py文件爆紅問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python+xlwings制作天氣預報表

    Python+xlwings制作天氣預報表

    python操作Excel的模塊,網(wǎng)上提到的模塊大致有:xlwings、xlrd、xlwt、openpyxl、pyxll等。本文將利用xlwings模塊制作一個天氣預報表,需要的可以參考一下
    2022-01-01

最新評論