国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python自動化測試之Selenium詳解

這篇具有很好參考價值的文章主要介紹了Python自動化測試之Selenium詳解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.安裝

完成自動化測試,需要配置三個東西。

Python自動化測試之Selenium詳解,軟件測試,技術(shù)分享,python,selenium,開發(fā)語言

selenium:pip就可以了

chrome:瀏覽器下載一個谷歌瀏覽器就行

chrome-driver:下載地址http://chromedriver.storage.googleapis.com/index.html

這里需要對應(yīng)到自己的瀏覽器版本下載。

從瀏覽器上下載到本地后,本機mac上自動保存至Download/目錄下

但我們要把它轉(zhuǎn)移到該去的地方

具體終端命令如下:

#目錄到下載位置

cd Downloads/

#解壓zip文件

unzip chromedriver_mac64.zip

#拿到解壓后文件Unix Executable類型文件后,移動它該去的位置

mv chromedriver /usr/local/bin/

 
  1. ?現(xiàn)在我也找了很多測試的朋友,做了一個分享技術(shù)的交流群,共享了很多我們收集的技術(shù)文檔和視頻教程。

  2. 如果你不想再體驗自學(xué)時找不到資源,沒人解答問題,堅持幾天便放棄的感受

  3. 可以加入我們一起交流。而且還有很多在自動化,性能,安全,測試開發(fā)等等方面有一定建樹的技術(shù)大牛

  4. 分享他們的經(jīng)驗,還會分享很多直播講座和技術(shù)沙龍

  5. 可以免費學(xué)習(xí)!劃重點!開源的?。。?/code>

  6. qq群號:680748947【暗號:csdn11】

Python自動化測試之Selenium詳解,軟件測試,技術(shù)分享,python,selenium,開發(fā)語言

2.基礎(chǔ)操作

下面就來了解一下?Selenium?的一些基礎(chǔ)操作把。先寫一點簡單的小功能演示一下:

 
  1. from selenium import webdriver

  2. from selenium.webdriver.common.keys import Keys

  3. browser = webdriver.Chrome()

  4. browser.get('https://www.baidu.com')

  5. input = browser.find_element_by_id('kw')

  6. input.send_keys('楊冪')

  7. input.send_keys(Keys.ENTER)

  8. print(browser.current_url)

  9. print(browser.get_cookies())

  10. print(browser.page_source)

運行以上代碼,可以看到自動彈出來一個 Chrome 瀏覽器,并且上面標(biāo)示了: Chrome 正受到自動軟件的控制 。然后打開了百度,在輸入框中輸入了 “楊冪” 進行搜索

Python自動化測試之Selenium詳解,軟件測試,技術(shù)分享,python,selenium,開發(fā)語言

2.1 聲明瀏覽器對象

Selenium 支持非常多的瀏覽器,如:

 
  1. from selenium import webdriver

  2. # 聲明瀏覽器對象,需對應(yīng)的驅(qū)動程序方可使用

  3. browser = webdriver.android()

  4. browser = webdriver.blackberry()

  5. browser = webdriver.chrome()

  6. browser = webdriver.edge()

  7. browser = webdriver.firefox()

  8. browser = webdriver.ie()

  9. browser = webdriver.opera()

  10. browser = webdriver.phantomjs()

  11. browser = webdriver.safari()

可以看到有我熟悉的 IE 瀏覽器、 Edge 瀏覽器、 FireFox 瀏覽器、 Opera 瀏覽器等等。

2.2 訪問網(wǎng)頁

訪問網(wǎng)頁可以使用 get() 方法,參數(shù)傳入我們想要訪問的網(wǎng)站即可:

 
  1. from selenium import webdriver

  2. browser = webdriver.Chrome()

  3. browser.get('https://www.jd.com/')

  4. print(browser.page_source)

通過上面兩行代碼,我們可以看到自動打開了瀏覽器并訪問的京東,在控制臺打印了京東的源代碼。

當(dāng)然,如果想要程序自動關(guān)閉瀏覽器的話可以使用:

1

browser.close()

2.3 查找單個節(jié)點

我們獲取到網(wǎng)頁后,第一步肯定是要先查找到 DOM 節(jié)點啊,然后可以直接從 DOM 節(jié)點中獲取數(shù)據(jù)。

不過有了 Selenium 以后,我們不僅可以查找到節(jié)點獲取數(shù)據(jù),還可以模擬用戶操作,比如在搜索框輸入某些內(nèi)容,點擊按鈕等等操作,不過還是先看看怎么查找節(jié)點:

Python自動化測試之Selenium詳解,軟件測試,技術(shù)分享,python,selenium,開發(fā)語言

從上面這張圖可以看到,我們想要獲取輸入框,可以通過 id 進行獲取,那么我們接下來的代碼要這么寫:

 
  1. from selenium import webdriver

  2. browser = webdriver.Chrome()

  3. browser.get('https://www.jd.com/')

  4. input_key = browser.find_element_by_id('key')

  5. print(input_key)

結(jié)果如下:

<selenium.webdriver.remote.webelement.WebElement (session="86d1ae1419bee22099a168dfbf921a27", element="53047804-ad39-4dfd-b3fb-a149fb1c8ac8")>

可以看到,我們獲得的元素類型是 WebElement 。

這里順手列出所有的獲得單個節(jié)點的方法:

 
  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

此外, selenium 還未我們提供了一個通用方法 find_element() ,它需要傳入兩個參數(shù):查找方式 By 和值。實際上上面示例中的查找方式還可以這么寫(效果完全一樣哦~~~)

 
  1. from selenium import webdriver

  2. from selenium.webdriver.common.by import By

  3. browser = webdriver.Chrome()

  4. browser.get('https://www.jd.com/')

  5. input_key1 = browser.find_element(By.ID, 'key')

  6. print(input_key1)

2.4 查找多個節(jié)點

比如我們要查找左邊的這種導(dǎo)航條的所有條目:

Python自動化測試之Selenium詳解,軟件測試,技術(shù)分享,python,selenium,開發(fā)語言

可以這么寫

1

2

lis?=?browser.find_elements_by_css_selector('.cate_menu li')

print(lis)

結(jié)果如下:

 
  1. [<selenium.webdriver.remote.webelement.WebElement (session="6341ab4f39733b5f6b6bd51508b62f1d", element="8e0d1a8c-d5dc-4b1f-8250-7f0eca864ea7")>, <selenium.webdriver.remote.webelement.WebElement (session="6341ab4f39733b5f6b6bd51508b62f1d", element="15cd4dc9-42f4-4ed7-9258-9aa29073243c")>,

  2. ......]

?下面列出來所有的多節(jié)點選擇的方法:

 
  1. find_elements_by_name

  2. find_elements_by_xpath

  3. find_elements_by_link_text

  4. find_elements_by_partial_link_text

  5. find_elements_by_tag_name

  6. find_elements_by_class_name

  7. find_elements_by_css_selector

同樣,多節(jié)點選擇也有一個 find_elements() 的方法,

3.等待

如今,大多數(shù) Web 應(yīng)用程序都在使用 AJAX 技術(shù)。當(dāng)瀏覽器加載頁面時,該頁面中的元素可能會以不同的時間間隔加載。這使定位元素變得困難:如果 DOM 中尚不存在元素,則定位函數(shù)將引發(fā) ElementNotVisibleException 異常。使用等待,我們可以解決此問題。等待在執(zhí)行的動作之間提供了一定的松弛時間-主要是定位元素或?qū)υ撛剡M行的任何其他操作。

Selenium Webdriver 提供兩種類型的等待-隱式和顯式。顯式等待使 WebDriver 等待特定條件發(fā)生,然后再繼續(xù)執(zhí)行。隱式等待使 WebDriver 在嘗試查找元素時輪詢DOM一定時間。

3.1 顯式等待

我們可以使用 time.sleep() 來設(shè)定等待時間,完全沒有問題,但是它需要將條件設(shè)置為要等待的確切時間段。如果我們不知道準(zhǔn)確的渲染時間,我們就無法設(shè)定一個比較合適的值。

Selenium 為我們提供了 WebDriverWait 與 ExpectedCondition 來完成這件事情,看代碼:

 
  1. from selenium import webdriver

  2. from selenium.webdriver.common.by import By

  3. from selenium.webdriver.support.ui import WebDriverWait

  4. from selenium.webdriver.support import expected_conditions as EC

  5. driver = webdriver.Chrome()

  6. driver.get("https://www.jd.com/")

  7. try:

  8. element = WebDriverWait(driver, 10).until(

  9. EC.presence_of_element_located((By.ID, "key"))

  10. )

  11. finally:

  12. driver.quit()

結(jié)果如下:

<selenium.webdriver.remote.webelement.WebElement (session="b1baacca997d18d7d54447127c844d15", element="a472369e-3196-4456-b43e-4e1b280bf5b9")>

上面我們使用了 WebDriverWait 來設(shè)置最長等待時間,這里我們選擇獲取 JD 首頁的輸入框,我們限定的等待時間為 10s ,如果它在 10s 內(nèi)都無法返回結(jié)果,將會拋出 TimeoutException 。默認(rèn)情況下, WebDriverWait 每 500 毫秒調(diào)用 ExpectedCondition ,直到成功返回。

3.2 隱式等待

隱式等待告訴 WebDriver 在嘗試查找不立即可用的一個或多個元素時在一定時間內(nèi)輪詢 DOM 。默認(rèn)設(shè)置為 0 。設(shè)置后,將在 WebDriver 對象的生存期內(nèi)設(shè)置隱式等待。

 
  1. from selenium import webdriver

  2. driver = webdriver.Chrome()

  3. driver.implicitly_wait(10) # seconds

  4. driver.get("https://www.jd.com/")

  5. key = driver.find_element_by_id("key")

  6. print(key)

節(jié)點交互

Selenium 為我們提供了一些節(jié)點的交互動作,如輸入文字時可以用 send_keys() 方法,清空文字時可以用 clear() 方法,點擊按鈕時可以用 click() 方法。

 
  1. from selenium import webdriver

  2. import time

  3. driver = webdriver.Chrome()

  4. driver.implicitly_wait(10)

  5. driver.get('https://www.taobao.com/')

  6. input = driver.find_element_by_id('q')

  7. input.send_keys('IPad')

  8. time.sleep(1)

  9. input.clear()

  10. input.send_keys('Surface Pro')

  11. button = driver.find_element_by_class_name('btn-search')

  12. button.click()

在上面這個示例中,我們先打開淘寶網(wǎng),并且開啟了隱式等待,先在搜索框中輸入了 IPad ,在等待 1s 后刪除,再輸入了 Surface Pro ,然后點擊了搜索按鈕,先在淘寶搜索需要用戶登錄才能搜索,所以我們直接跳轉(zhuǎn)到了登錄頁。

執(zhí)行 JavaScript

對于某些 Selenium API 沒有提供的操作,我們可以通過模擬運行 JavaScript 的方式來完成,用到的方法是 execute_script() ,比如我們在淘寶首頁將滾動條滑到底部:

 
  1. from selenium import webdriver

  2. driver = webdriver.Chrome()

  3. driver.get('https://www.taobao.com/')

  4. driver.execute_script('window.scrollTo(0, document.body.scrollHeight)')

獲取信息

前面我們介紹了如何拿到 DOM 節(jié)點,那么最重要的是我們要從 DOM 節(jié)點上來獲取我們需要的信息。

因為我們獲取的是 WebElement 類型,而 WebElement 也提供了相關(guān)的方法來提取節(jié)點信息。

 
  1. from selenium import webdriver

  2. from selenium.webdriver.chrome.options import Options

  3. # 實例化一個啟動參數(shù)對象

  4. chrome_options = Options()

  5. # 設(shè)置瀏覽器窗口大小

  6. chrome_options.add_argument('--window-size=1366, 768')

  7. # 啟動瀏覽器

  8. driver = webdriver.Chrome(chrome_options=chrome_options)

  9. url = 'https://www.geekdigging.com/'

  10. driver.get(url)

  11. title = driver.find_element_by_xpath('//*[@id="text-4"]/div/div/div[1]/div[2]/a')

  12. print(title)

  13. # 獲取屬性信息

  14. print(title.get_attribute('href'))

  15. # 獲取文本信息

  16. print(title.text)

  17. # 獲取位置

  18. print(title.location)

  19. # 獲取大小

  20. print(title.size)

上面因為 Chrome 默認(rèn)打開大小有點小,打開小編博客的時候小編選擇的這個 DOM 節(jié)點正好看到,所以小編設(shè)置了一下 Chrome 瀏覽器打開時的大小。

具體信息的供大家參考:

  • parent:查找到此元素的WebDriver實例的內(nèi)部引用。
  • rect:具有元素大小和位置的字典。
  • screenshot_as_base64:以 base64 編碼字符串的形式獲取當(dāng)前元素的屏幕快照。
  • screenshot_as_png:以二進制數(shù)據(jù)獲取當(dāng)前元素的屏幕截圖。最后這兩個獲取元素屏幕快照,在獲取驗證碼的時候?qū)Ⅱ炞C碼截取出來會很好用的。

前進和后退

我們使用瀏覽器最上面的地方有一個前進和后退按鈕,Selenium 完成這兩個動作使用了 back() 和 forward() 這兩個方法。

 
  1. import time

  2. from selenium import webdriver

  3. browser = webdriver.Chrome()

  4. browser.get('https://www.jd.com/')

  5. browser.get('https://www.taobao.com/')

  6. browser.get('https://www.geekdigging.com/')

  7. browser.back()

  8. time.sleep(1)

  9. browser.forward()

Cookies

又到了一個重點內(nèi)容, Cookies ,它是和服務(wù)端保持會話的一個重要元素。 Selenium 為我們提供了一些方法,讓我們可以方便的對 Cookies 進行增刪改查等操作。示例如下:

 
  1. from selenium import webdriver

  2. browser = webdriver.Chrome()

  3. browser.get('https://www.geekdigging.com/')

  4. # 獲取 cookies

  5. print(browser.get_cookies())

  6. # 添加一個 cookie

  7. browser.add_cookie({'name': 'name', 'domain': 'www.geekdigging.com', 'value': 'geekdigging'})

  8. print(browser.get_cookies())

  9. # 刪除所有 cookie

  10. browser.delete_all_cookies()

  11. print(browser.get_cookies())

總結(jié):

感謝每一個認(rèn)真閱讀我文章的人?。?!

作為一位過來人也是希望大家少走一些彎路,如果你不想再體驗一次學(xué)習(xí)時找不到資料,沒人解答問題,堅持幾天便放棄的感受的話,在這里我給大家分享一些自動化測試的學(xué)習(xí)資源,希望能給你前進的路上帶來幫助。

Python自動化測試之Selenium詳解,軟件測試,技術(shù)分享,python,selenium,開發(fā)語言

軟件測試面試文檔

我們學(xué)習(xí)必然是為了找到高薪的工作,下面這些面試題是來自阿里、騰訊、字節(jié)等一線互聯(lián)網(wǎng)大廠最新的面試資料,并且有字節(jié)大佬給出了權(quán)威的解答,刷完這一套面試資料相信大家都能找到滿意的工作。

Python自動化測試之Selenium詳解,軟件測試,技術(shù)分享,python,selenium,開發(fā)語言

?Python自動化測試之Selenium詳解,軟件測試,技術(shù)分享,python,selenium,開發(fā)語言

? ? ? ? ? 視頻文檔獲取方式:
這份文檔和視頻資料,對于想從事【軟件測試】的朋友來說應(yīng)該是最全面最完整的備戰(zhàn)倉庫,這個倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!以上均可以分享,點下方小卡片即可自行領(lǐng)取。文章來源地址http://www.zghlxwxcb.cn/news/detail-844024.html

到了這里,關(guān)于Python自動化測試之Selenium詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 軟件測試 自動化測試selenium篇(一)

    軟件測試 自動化測試selenium篇(一)

    目錄 一、什么是自動化測試 ?單元測試 ?接口自動化 ?UI自動化 二、如何實施自動化測試 ?自動化測試需要了解的技能 三、selenium介紹 webdriver的工作原理: ?四、Selenium+Java環(huán)境搭建 ? ? ? ? ? ? ? ? ? ?驗證環(huán)境是否搭建成功 創(chuàng)建java項目,添加pom文件中添加依賴 常見問題

    2024年02月07日
    瀏覽(37)
  • 軟件測試 自動化測試selenium API

    軟件測試 自動化測試selenium API

    1.1.1 CSS 選擇器定位元素 CSS 選擇器 就是一個語法 瀏覽器 (ctrl + f)可以進行選擇 類選擇器:.class值(.s_ipt) id 選擇器:#id值(#kw) 父類選擇器 子類選擇器:父類選擇器表達(dá)式 子類選擇器表達(dá)式 標(biāo)簽選擇器:標(biāo)簽名(form) 1.1.2 XPath 定位元素 XPath 是一種在XML 文檔中定位元

    2024年04月28日
    瀏覽(34)
  • 軟件測試(五)自動化 selenium

    軟件測試(五)自動化 selenium

    自動化測試指軟件測試的自動化,在預(yù)設(shè)狀態(tài)下運行應(yīng)用程序或者系統(tǒng),預(yù)設(shè)條件包括正常和異常,最后評估運行結(jié)果。將人為驅(qū)動的測試行為轉(zhuǎn)化為機器(代碼)執(zhí)行的過程。(簡單而言其實就是降低重復(fù)性的工作(大部分是Python)) 自動化測試的具體實現(xiàn),應(yīng)該是包含下

    2024年02月08日
    瀏覽(31)
  • 軟件測試/測試開發(fā)丨Selenium Web自動化測試基本操作

    本文為霍格沃茲測試開發(fā)學(xué)社學(xué)員學(xué)習(xí)筆記分享 原文鏈接:https://ceshiren.com/t/topic/26901 模擬功能測試中對瀏覽器的操作 get方法打開瀏覽器 refresh方法刷新頁面 用back方法回退到上一個界面 maximize_window方法使窗口最大化 minimize_window方法使窗口最小化 標(biāo)簽: a 屬性:href 類屬性

    2024年02月10日
    瀏覽(30)
  • Python + selenium 自動化測試框架詳解

    Python + selenium 自動化測試框架詳解

    項目自動化測試框架設(shè)計為4層 1.基礎(chǔ)層(通用層) 基礎(chǔ)層: 將通用,重復(fù)性比較高的代碼封裝到這里。 寫通用的代碼的。 其他3層想要的話,就可以直接調(diào)用。 例如: 讀取測試數(shù)據(jù)的代碼,讀取配置信息的代碼;截圖的代碼的,定位元素的代碼等等 2.功能層(頁面層) 功

    2024年02月03日
    瀏覽(26)
  • Python自動化測試之Selenium詳解

    Python自動化測試之Selenium詳解

    1.安裝 完成自動化測試,需要配置三個東西。 selenium :pip就可以了 chrome :瀏覽器下載一個谷歌瀏覽器就行 chrome-driver :下載地址http://chromedriver.storage.googleapis.com/index.html 這里需要對應(yīng)到自己的瀏覽器版本下載。 從瀏覽器上下載到本地后,本機mac上自動保存至Download/目錄下

    2024年03月28日
    瀏覽(20)
  • Python自動化測試?yán)鱯elenium詳解

    Python自動化測試?yán)鱯elenium詳解

    Selenium是一種常用的Web自動化測試工具,支持多種編程語言和多種瀏覽器,可以模擬用戶的交互行為,自動化地執(zhí)行測試用例和生成測試報告。Selenium基于瀏覽器驅(qū)動實現(xiàn),結(jié)合多種定位元素的方法,可以實現(xiàn)各種復(fù)雜的Web應(yīng)用程序的測試 自動化測試指軟件測試的自動化,在

    2024年02月16日
    瀏覽(91)
  • 軟件測試/測試開發(fā)丨Selenium Web自動化測試 高級控件交互方法

    本文為霍格沃茲測試開發(fā)學(xué)社學(xué)員學(xué)習(xí)筆記分享 原文鏈接:https://ceshiren.com/t/topic/27045 使用場景 對應(yīng)事件 復(fù)制粘貼 鍵盤事件 拖動元素到某個位置 鼠標(biāo)事件 鼠標(biāo)懸停 鼠標(biāo)事件 滾動到某個元素 滾動事件 使用觸控筆點擊 觸控筆事件(了解即可) https://www.selenium.dev/documentati

    2024年02月09日
    瀏覽(62)
  • 自動化測試工具Selenium的基本使用方法,軟件測試基礎(chǔ)

    自動化測試工具Selenium的基本使用方法,軟件測試基礎(chǔ)

    browser.find_element(By.ID,‘kw’).send_keys(“美女”) browser.find_element_by_id(‘kw’).send_keys(‘性感’) 2.通過標(biāo)簽name屬性進行定位 browser.find_element_by_name(“wd”).send_keys(“Linux”) browser.find_element(By.NAME,‘wd’).send_keys(“美女”) 3.通過標(biāo)簽名進行定位 browser.find_element_by_tag_name(“input”).

    2024年04月22日
    瀏覽(97)
  • 軟件測試自動化Java篇【Selenium+Junit 5】

    軟件測試自動化Java篇【Selenium+Junit 5】

    為什么選擇selenium作為我們的web自動化測試工具? 開源免費 支持多瀏覽器 支持多系統(tǒng) 支持多語言【Java,Python,C#,Rubby,JavaScript,Kolin】 selenium包提供了很多可供測試使用的API Chrome瀏覽器 Chrome驅(qū)動【驅(qū)動器版本要和瀏覽器版本對應(yīng)越詳細(xì)越好】 然后把驅(qū)動包放在安裝jdk的

    2024年01月18日
    瀏覽(44)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包