Selenium用法詳解

Selenium 是一個用於Web應用程序測試的工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作一樣。支持的瀏覽器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。這個工具的主要功能包括:測試與瀏覽器的兼容性——測試你的應用程序看是否能夠很好得工作在不同瀏覽器和操作系統之上。測試系統功能——創建迴歸測試檢驗軟件功能和用戶需求。支持自動錄製動作和自動生成 .Net、Java、Perl等不同語言的測試腳本。

Selenium學習教程推薦:https://edu.csdn.net/lecturer/1775?utm_source=ttxiaoshipin

selenium用於爬蟲,主要是用來解決javascript渲染的問題

selenium的安裝詳見博客:http://blog.csdn.net/qq_29186489/article/details/78581249

Selenium學習教程推薦:

軟件測試之java selenium3自動化測試項目實戰

https://edu.csdn.net/course/detail/7224?utm_source=ttxiaoshipin

python3 selenium3自動化測試基礎系列

https://edu.csdn.net/course/detail/6838?utm_source=ttxiaoshipin

軟件測試系列之Python Selenium3自動化測試項目實戰視頻教程

https://edu.csdn.net/course/detail/6621?utm_source=ttxiaoshipin

基本框架

控制chrome瀏覽器,訪問百度,並搜索關鍵詞Python,獲取搜索結果

# -*- coding: utf-8 -*-

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.common.keys import Keys

from selenium.webdriver.support import expected_conditions as EC

from selenium.webdriver.support.wait import WebDriverWait

import time

browser=webdriver.Chrome()

try:

browser.get("https://www.baidu.com")

input=browser.find_element_by_id("kw")

input.send_keys("Python")

input.send_keys(Keys.ENTER)

wait=WebDriverWait(browser,10)

wait.until(EC.presence_of_element_located((By.ID,"content_left")))

print(browser.current_url)

print(browser.get_cookies())

print(browser.page_source)

time.sleep(10)

finally:

browser.close()

運行結果如下:

Selenium用法詳解

Selenium用法詳解

詳細用法如下:

# -*- coding: utf-8 -*-

from selenium import webdriver

#聲明谷歌、Firefox、Safari等瀏覽器

browser=webdriver.Chrome()

browser=webdriver.Firefox()

browser=webdriver.Safari()

browser=webdriver.Edge()

browser=webdriver.PhantomJS()

2:訪問頁面

#_*_coding: utf-8_*_

from selenium import webdriver

browser=webdriver.Chrome()

browser.get("http://www.taobao.com")

print(browser.page_source)

browser.close()

3:查找單個元素

#_*_coding: utf-8_*_

from selenium import webdriver

from selenium.webdriver.common.by import By

browser=webdriver.Chrome()

browser.get("http://www.taobao.com")

input_first=browser.find_element_by_id("q")

input_second=browser.find_element_by_css_selector("#q")

input_third=browser.find_element(By.ID,"q")

print(input_first,input_second,input_first)

browser.close()

4:查找多個元素

#_*_coding: utf-8_*_

from selenium import webdriver

from selenium.webdriver.common.by import By

browser=webdriver.Chrome()

browser.get("http://www.taobao.com")

lis=browser.find_element_by_css_selector("li")

lis_c=browser.find_element(By.CSS_SELECTOR,"li")

print(lis,lis_c)

browser.close()

5:元素的交互操作

對獲取到的元素調用交互方法

#_*_coding: utf-8_*_

from selenium import webdriver

import time

browser=webdriver.Chrome()

browser.get("https://www.taobao.com")

input=browser.find_element_by_id("q")

input.send_keys("iPhone")

time.sleep(10)

input.clear()

input.send_keys("iPad")

button=browser.find_element_by_class_name("btn-search")

button.click()

time.sleep(10)

browser.close()

6:交互動作

把動作附加到交互鏈中

#_*_coding: utf-8_*_

from selenium import webdriver

from selenium.webdriver import ActionChains

import time

from selenium.webdriver.common.alert import Alert

browser=webdriver.Chrome()

url="http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable"

browser.get(url)

#切換到目標元素所在的frame

browser.switch_to.frame("iframeResult")

#確定拖拽目標的起點

source=browser.find_element_by_id("draggable")

#確定拖拽目標的終點

target=browser.find_element_by_id("droppable")

#形成動作鏈

actions=ActionChains(browser)

actions.drag_and_drop(source,target)

#執行

actions.perform()

'''

1.先用switch_to_alert()方法切換到alert彈出框上

2.可以用text方法獲取彈出的文本 信息

3.accept()點擊確認按鈕

4.dismiss()相當於點右上角x,取消彈出框

'''

t=browser.switch_to_alert()

print(t.text)

t.accept()

time.sleep(10)

browser.close()

7:執行javascript

下面的例子是執行就是,拖拽進度條到底,並彈出提示框

#_*_coding: utf-8_*_

from selenium import webdriver

browser=webdriver.Chrome()

browser.get("https://www.zhihu.com/explore")

browser.execute_script("window.scrollTo(0,document.body.scrollHeight)")

browser.execute_script("alert('To Button')")

browser.close()

8:獲取元素信息

獲取屬性

# -*- coding: utf-8 -*-

from selenium import webdriver

browser=webdriver.Chrome()

url="https://www.zhihu.com/explore"

browser.get(url)

logo=browser.find_element_by_id("zh-top-link-logo")

print(logo)

print(logo.get_attribute("class"))

browser.close()

獲取文本值

# -*- coding: utf-8 -*-

from selenium import webdriver

browser=webdriver.Chrome()

url="https://www.zhihu.com/explore"

browser.get(url)

logo=browser.find_element_by_id("zh-top-link-logo")

print(logo)

print(logo.text)

browser.close()

獲取ID、位置、大小和標籤名

# -*- coding: utf-8 -*-

from selenium import webdriver

browser=webdriver.Chrome()

url="https://www.zhihu.com/explore"

browser.get(url)

logo=browser.find_element_by_id("zh-top-link-logo")

print(logo)

#id

print(logo.id)

#位置

print(logo.location)

#標籤名

print(logo.tag_name)

#大小

print(logo.size)

browser.close()

9:等待

隱式等待

當使用了隱式等待執行測試的時候,如果webdriver沒有在DOM中找到元素,將繼續等待,超過設定的時間後則拋出找不到元素的異常,換句話說,當查找元素或元素並沒有立即出現的時候,隱式等待將等待一段時間再查找DOM,默認時間為0.

# -*- coding: utf-8 -*-

from selenium import webdriver

browser=webdriver.Chrome()

url="https://www.zhihu.com/explore"

browser.get(url)

browser.implicitly_wait(10)

logo=browser.find_element_by_id("zh-top-link-logo")

print(logo)

browser.close()

顯示等待

# -*- coding: utf-8 -*-

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

browser=webdriver.Chrome()

url="https://www.taobao.com"

browser.get(url)

wait=WebDriverWait(browser,10)

input=wait.until(EC.presence_of_element_located((By.ID,"q")))

button=wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,".btn-search")))

print(input,button)

browser.close()

10:瀏覽器的前進和後退

# -*- coding: utf-8 -*-

from selenium import webdriver

import time

browser=webdriver.Chrome()

browser.get("https://www.taobao.com")

browser.get("https://www.baidu.com")

browser.get("https://www.python.org")

browser.back()

time.sleep(1)

browser.forward()

browser.close()

11:cookies的處理

# -*- coding: utf-8 -*-

from selenium import webdriver

import time

browser=webdriver.Chrome()

browser.get("https://www.zhihu.com/explore")

print(browser.get_cookies())

browser.add_cookie({"name":"name","domain":"www.zhihu.com","value":"germey"})

print(browser.get_cookies())

browser.delete_all_cookies()

print(browser.get_cookies())

browser.close()

12:選項卡管理

# -*- coding: utf-8 -*-

from selenium import webdriver

import time

browser=webdriver.Chrome()

browser.get("https://www.zhihu.com/explore")

browser.execute_script("window.open()")

print(browser.window_handles)

browser.switch_to_window(browser.window_handles[1])

browser.get("https://www.taobao.com")

time.sleep(1)

browser.switch_to_window(browser.window_handles[0])

browser.get("https://python.org")

browser.close()

13:異常處理

# -*- coding: utf-8 -*-

from selenium import webdriver

from selenium.common.exceptions import TimeoutException,NoSuchElementException

browser=webdriver.Chrome()

try:

browser.get("https://www.zhihu.com/explore")

except TimeoutException:

print("Time out")

try:

browser.find_element_by_id("hello")

except NoSuchElementException:

print("No Element")

finally:

browser.close()

Selenium學習資源推薦:

軟件測試之java selenium3自動化測試項目實戰

https://edu.csdn.net/course/detail/7224?utm_source=ttxiaoshipin

python3 selenium3自動化測試基礎系列

https://edu.csdn.net/course/detail/6838?utm_source=ttxiaoshipin

軟件測試系列之Python Selenium3自動化測試項目實戰視頻教程

https://edu.csdn.net/course/detail/6621?utm_source=ttxiaoshipin

----------------------------------------------------------------

希望本文對大家有幫助!


分享到:


相關文章: