真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

快速掌握PythonSeleniumWeb自動化

這篇文章運用簡單易懂的例子給大家介紹快速掌握Python Selenium Web自動化,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

創(chuàng)新互聯(lián)公司主營聶榮網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶APP開發(fā)公司,聶榮h5微信小程序開發(fā)搭建,聶榮網(wǎng)站營銷推廣歡迎聶榮等地區(qū)企業(yè)咨詢

一、搭建Selenium環(huán)境

1.1 Selenium是什么?

Selenium是一個Web自動化測試軟件。

1.2 在Python中安裝Selenium

pip install selenium

1.3 下載瀏覽器驅(qū)動程序

Selenium需要通過瀏覽器的驅(qū)動程序(webdriver)來連接和啟動一個瀏覽器。如果使用Firefox,那么需要geckodriver;如果使用Chrome,那么需要chromedriver;

在這里,我們選擇谷歌的Chrome瀏覽器作為講解演示,所以我們需要下載chromedriver。

網(wǎng)址:http://npm.taobao.org/mirrors/chromedriver/

快速掌握Python Selenium Web自動化

選擇版本-->選擇平臺-->下載解壓-->得到“chromedriver.exe“

1.4 總結(jié)

這章簡單介紹了Selenium、在Python中安裝Selenium,以及下載合適的瀏覽器驅(qū)動程序。

二、Selenium操縱瀏覽器的最基本用例

2.1 簡單的使用Selenium

# coding:utf-8
from selenium import webdriver
driver = webdriver.Chrome(executable_path=r".\chromedriver.exe")
driver.get('http://www.baidu.com')
inputs = driver.find_element_by_id('kw')
inputs.clear()
inputs.send_keys("汪繼超 數(shù)據(jù)結(jié)構(gòu)")

''' 運行上述代碼,電腦會自動啟動Chrome瀏覽器,并打開百度的首頁,

定位百度的輸入框,在其中輸入“汪繼超 數(shù)據(jù)結(jié)構(gòu)” '''

2.2 用例代碼解釋

從selenium中導(dǎo)入和webdriver子模塊,webdriver提供了所有的瀏覽器驅(qū)動程序的實現(xiàn)調(diào)用方式:

from selenium import webdriver

實例化了一個Chrome瀏覽器的webdriver{在Chrome()方法中,我們通過executable_path指定了之前下載好的chromedriver.exe的路徑。}:

driver = webdriver.Chrome(executable_path=r".\chromedriver.exe")

driver的get()方法將操縱瀏覽器打開一個指定的URL,這一步將等待頁面完全加載完成:

driver.get("http://www.baidu.com")

在等待頁面加載完成之后,我們使用find_element_by_id()方法通過元素的ID來定位和查找頁面輸入框元素。在selenium中,webdriver提供了很多個方法來查找元素,其方法的名稱都為find_element_by_ *:

inputs = driver.find_element_by_id('kw')

在通過輸入框的id值定位到百度首頁的輸入搜索框之后,我們接著使用clear()方法來清除輸入框中的內(nèi)容(雖然輸入框中并沒有內(nèi)容),然后使用send_keys()方法,將一個字符串發(fā)送到輸入框中:

inputs.clear()
inputs.send_keys("汪繼超 數(shù)據(jù)結(jié)構(gòu)")

2.3 總結(jié)

這章,我們通過一個簡單的示例——操縱Chrome瀏覽器打開百度首頁,在輸入框中輸入搜索詞,完成了Selenium的初步介紹。Selenium還有更多的用法,在接下來的章幅中我們會一一介紹到。

三、在Selenium中定位查找網(wǎng)頁元素的諸類方法

使用Selenium進行自動化操作,首先要做的就是通過webdriver的get()方法打開一個URL鏈接。在打開鏈接,完成頁面加載之后,就可以通過Selenium提供的接口,在頁面上進行各種操作了,下面我們來了解一下如何在查找元素。

3.1 查找和定位網(wǎng)頁元素

在上一章的示例中,我們就演示了如何通過find_element_by_id()方法,根據(jù)元素的id值來定位頁面元素。除了根據(jù)元素的id值來查找元素外,Selenium還提供了很多查找元素的方法。Selenium提供了近二十個find_element族的方法來供我們在頁面中查找元素,其中包括id、name、類名、css選擇器、鏈接文本、標(biāo)簽名、xpath等。

定位單個匹配元素的方法有:

find_element_by_id
find_element_by_name
find_element_by_xpath
find_element_by_link_text
find_element_by_partial_link_text
find_element_by_tag_name
find_element_by_class_name
find_element_by_css_selector

定位多個匹配元素的方法有:

find_elements_by_name
find_elements_by_xpath
find_elements_by_link_text
find_elements_by_partial_link_text
find_elements_by_tag_name
find_elements_by_class_name
find_elements_by_css_selector

我們可以根據(jù)不同頁面的不同情況來查找定位到我們所需要的頁面元素。

3.2 通過id屬性進行定位

# coding:utf-8
from selenium import webdriver
driver = webdriver.Chrome(executable_path=r".\chromedriver.exe")
driver.get('http://www.baidu.com')
inputs = driver.find_element_by_id('kw')

3.3 通過name屬性進行定位

# coding:utf-8
from selenium import webdriver         
driver = webdriver.Chrome(executable_path=r".\chromedriver.exe")
driver.get('http://www.baidu.com')
inputs = driver.find_element_by_name('wd')

3.4 通過Xpath進行元素定位

XPath是用于在XML文檔中查找節(jié)點的一種語言。對于Xpath的知識,在此不做介紹,有需要的同學(xué)看看專門介紹Xpath的網(wǎng)站或教程,比如:W3schhool Xpath教程。

在此我們簡單介紹一下如何快速地通過瀏覽器獲取到頁面元素的Xpath路徑。在瀏覽器中打開網(wǎng)頁調(diào)試控制臺,在需要定位的元素上,單擊鼠標(biāo)右鍵,會出現(xiàn)一個選項欄,在“copy”中選擇“Copy XPath”即可:

# coding:utf-8
from selenium import webdriver            
driver = webdriver.Chrome(executable_path=r".\chromedriver.exe")
driver.get('http://www.baidu.com')
inputs = driver.find_element_by_xpath('//*[@id="kw"]')

3.5 通過標(biāo)簽名來定位元素

我們想通過元素的標(biāo)簽名稱來定位一個元素時,可以使用find_element_by_tag_name()這個方法,其將返回具有給定標(biāo)簽名稱的第一個元素:

# coding:utf-8
from selenium import webdriver          
driver = webdriver.Chrome(executable_path=r".\chromedriver.exe")
driver.get('http://www.baidu.com')
inputs = driver.find_element_by_tag_name('input')

3.6 通過class類名來定位元素

如果我們想通過元素的class屬性值來定位,那么可以使用find_element_by_class_name()方法。其將返回匹配的第一個元素,如果沒有匹配的元素,同樣會拋出NoSuchElementException異常:

# coding:utf-8
from selenium import webdriver             
driver = webdriver.Chrome(executable_path=r".\chromedriver.exe")
driver.get('http://www.baidu.com')
inputs = driver.find_element_by_class_name('s_btn')

3.7 通過CSS選擇器進行定位元素

CSS選擇器是一種通過元素的CSS屬性值來定位元素的語法,我們可以使用find_element_by_css_selector()方法通過css選擇器定位元素:

# coding:utf-8
from selenium import webdriver
driver = webdriver.Chrome(executable_path=r".\chromedriver.exe")
driver.get('http://www.baidu.com')
inputs = driver.find_element_by_css_selector('input.s_btn')

3.8 通過鏈接標(biāo)簽文字定位元素

除了上述的元素定位方式,我們還可以通過a標(biāo)簽上的文字進行元素定位,使用的是find_element_by_link_text()方法,如果我們需要定位到“視頻”那個鏈接元素上,就可以這樣操作:

# coding:utf-8
from selenium import webdriver
driver = webdriver.Chrome(executable_path=r".\chromedriver.exe")
driver.get('http://www.baidu.com')
inputs = driver.find_element_by_link_text('視頻')

3.9 總結(jié)

在這章,我們介紹了在使用Selenium打開一個頁面之后,如何通過id屬性、name屬性、class屬性、Xpath路徑、CSS選擇器、標(biāo)簽名等方式對元素進行查找和地位。成功定位頁面元素是對頁面進行復(fù)雜操作的一個重要前提。

四、使用Selenium在網(wǎng)頁上進行操作

在上一章中,我們介紹了如何使用Selenium在頁面中查找定位頁面元素。在定位到頁面元素之后,我們能夠做些什么呢?這章我們就將來簡單了解一下。

4.1 模擬鍵盤鍵入

4.1.1 輸入文本

在定位到元素之后,我們一般會做什么?如果定位的是input輸入框,那么我們可能需要在其中輸入一些值。想要實現(xiàn)這個功能,在Selenium中,我們可以使用send_keys()方法,在上一章文章定位input元素的示例中,我們稍微演示了一下send_keys()的使用:

# coding:utf-8
from selenium import webdriver
             
driver = webdriver.Chrome(executable_path=r".\chromedriver.exe")
driver.get('http://www.baidu.com')
inputs = driver.find_element_by_id('kw')
inputs.send_keys("汪繼超 數(shù)據(jù)結(jié)構(gòu)")

這樣,selenium就會操縱瀏覽器在input輸入框內(nèi)輸入“汪繼超 數(shù)據(jù)結(jié)構(gòu)”

4.1.2 清除文本

如果,輸入錯了,嗯,沒關(guān)系,我們可以使用clear()方法,對元素的值進行清除:

# coding:utf-8
from selenium import webdriver
driver = webdriver.Chrome(executable_path=r".\chromedriver.exe")
driver.get('http://www.baidu.com')
inputs = driver.find_element_by_id('kw')
inputs.send_keys("汪繼超 數(shù)據(jù)結(jié)構(gòu)")
inputs.clear()

4.1.3 實現(xiàn)點擊

在input輸入框輸入了內(nèi)容之后,我們可能需要點擊“百度一下”按鈕進行搜索。這時候,我們可以定位到按鈕元素,再對按鈕元素執(zhí)行click()方法進行點擊:

# coding:utf-8
from selenium import webdriver
driver = webdriver.Chrome(executable_path=r".\chromedriver.exe")
driver.get('http://www.baidu.com')
inputs = driver.find_element_by_id('kw')
inputs.send_keys("汪繼超 數(shù)據(jù)結(jié)構(gòu)")
search_btn = driver.find_element_by_id('su')
search_btn.click()

這樣就完成了從輸入搜索詞,到點擊搜索的過程。除此之外,還有另外一種方法。

4.1.4 鍵盤功能鍵的鍵入

另外一種方法就是,可以在輸入input輸入框的值之后,直接模擬回車鍵(因為百度提供了回車直接搜索的功能)。

要模擬鍵入鍵盤上的回車,我們首先需要導(dǎo)入直接相關(guān)的模塊:

from selenium.webdriver.common.keys import Keys

我們可以直接在send_keys()方法中使用:

# coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
         
driver = webdriver.Chrome(executable_path=r".\chromedriver.exe")
driver.get('http://www.baidu.com')
inputs = driver.find_element_by_id('kw')
inputs.send_keys("汪繼超 數(shù)據(jù)結(jié)構(gòu)",Keys.ENTER)
# search_btn = driver.find_element_by_id('su')
# search_btn.click()

其他鍵的使用方法也是一樣的。

4.2 模擬鼠標(biāo)行為

除了在輸入框中輸入文本,我們可能還經(jīng)常需要在網(wǎng)頁上使用鼠標(biāo)進行一些拖動操作,比如把一個元素拖動到另一個元素里面,把一個元素拖動到另一個位置上。

在selenium中,有一個專門用于鼠標(biāo)行為的類名為ActionChains:

from selenium.webdriver import ActionChains

其中定義了很多的鼠標(biāo)動作操作方法,比如:

click:鼠標(biāo)左鍵點擊;

click_and_hold:在元素上按住鼠標(biāo)左鍵;

context_click:在元素上執(zhí)行鼠標(biāo)右擊;

double_click:在元素上執(zhí)行鼠標(biāo)雙擊;

drag_and_drop:拖拽一個元素到另一個元素上;

drag_and_drop_by_offset:拖拽一個元素到另一個偏移量上;

move_by_offset:移動鼠標(biāo)指定的偏移量;

move_to_element:將鼠標(biāo)移動到某個元素上;

move_to_element_with_offset:通過指定元素的偏移量移動鼠標(biāo);

release :釋放一個元素上的鼠標(biāo)按鈕;

perform : 執(zhí)行定義的所有鼠標(biāo)動作;

我們可以通過ActionChains類下面的方法進行豐富的鼠標(biāo)操作。

先來看一個例子:http://sahitest.com/demo/dragDropMooTools.htm

快速掌握Python Selenium Web自動化

是一個自動化測試的demo,里面包含了一個可拖拽對象,我們可以通過它來測試Selenium的鼠標(biāo)拖拽事件:

# coding:utf-8 
import time
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome(executable_path=r".\chromedriver.exe")
driver.get('http://sahitest.com/demo/dragDropMooTools.htm')
# 被拖拽元素
dragger = driver.find_element_by_id('dragger')  
# 目標(biāo)元素
item1 = driver.find_element_by_xpath('//div[text()="Item 1"]') 
time.sleep(3)
action = ActionChains(driver)
# 移動dragger到目標(biāo)1
action.drag_and_drop(dragger, item1).perform()

4.3 切換窗口與框架

如果我們使用Selenium打開了多個窗口,使用switch_to.window()方法可以很方便地對窗口進行切換。我們來看一個實際的例子,我們在搜狗的微信搜索中搜索“笑話”,然后點擊第一個搜索結(jié)果。如何將當(dāng)前的窗口切換回之前的搜索結(jié)果頁呢?看看switch_to.window()的方法:

# coding:utf-8
import time
from selenium import webdriver
driver = webdriver.Chrome(executable_path=r".\chromedriver.exe")
driver.get('http://weixin.sogou.com/')
inputs = driver.find_element_by_id('query')
inputs.clear()
inputs.send_keys("笑話")
submit = driver.find_element_by_css_selector("input.swz")
submit.click()
time.sleep(3)
# 獲取第一個窗口
window_1 = driver.current_window_handle
# 定位第一個搜索結(jié)果并新窗口打開
article = driver.find_element_by_css_selector("div.txt-box > h4 > a")
article.click()
time.sleep(5)
# 切換回第一個窗口
driver.switch_to.window(window_1)

關(guān)于快速掌握Python Selenium Web自動化就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


當(dāng)前標(biāo)題:快速掌握PythonSeleniumWeb自動化
分享地址:http://weahome.cn/article/jspgee.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部