關于selenium
selenium是一個用于Web應用程式測試的工具,selenium測試直接運作再浏覽器上,就像真正的使用者在操作一樣。(百度百科)
安裝selenium
使用pip安裝selenium。
pip install selenium
安裝浏覽器驅動
Chrome驅動下載下傳位址:http://npm.taobao.org/mirrors/chromedriver/
Firefox驅動下載下傳位址:https://github.com/mozilla/geckodriver/releases/
IE驅動下載下傳位址:http://selenium-release.storage.googleapis.com/index.html
找到對應的浏覽器、版本下載下傳。
下載下傳完成後,需要做兩件事:1.将驅動放複制到浏覽器根目錄下;2.将驅動複制到Python根目錄下。

注意: 若浏覽器的安裝路徑非預設路徑,則需要将浏覽器的安裝路徑添加到環境變量path中。
測試環境是否搭建成功
指令:
from selenium import webdriver
browser = webdriver.Chrome()
第二行可根據自身浏覽器自行修改,例如:Ie()、Firefox()、Poera()等。若看到如下圖所示啟動了浏覽器則表明環境搭建成功。
selenium快速入門
定位元素
方法 | 說明 |
---|---|
find_element_by_id | 使用id定位元素 |
find_element_by_name | 使用name定位元素 |
find_element_by_xpath | 使用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 | 使用css選擇器定位元素 |
例如:通過xpath定位:
from selenium import webdriver
# 打開一個浏覽器
browser = webdriver.Chrome()
# 使用get方式打開一個站點
browser.get("https://www.baidu.com/")
# 使用xpath定位元素
inputTag = browser.find_element_by_xpath('//*[@id="kw"]')
滑鼠事件
方法 | 說明 |
---|---|
ActionChains(driver) | 構造ActionChains對象 |
context_click() | 右鍵 |
move_to_element(above) | 滑鼠懸停 |
double_click() | 輕按兩下 |
drag_and_drop() | 拖動 |
perform() | 執行所有ActionChains中的存儲行為,可以了解成是對豬呢個操作的送出動作 |
例如我們首先通過xpath定位到一個表單的送出按鈕,執行click(),即可送出表單
# 定位送出按鈕
firstEntrance = browser.find_element_by_xpath('/html/body/form/div[3]/table/tbody/tr/td[1]/input')
# 單擊送出按鈕
firstEntrance.click()
鍵盤事件
send_keys()方法可以模拟對表單的填寫,也可以模拟鍵盤的操作。
方法 | 說明 |
---|---|
send_keys(Keys.BACK_SPACE) | 删除鍵backspace |
send_keys(Keys.SPACE) | 空格 |
send_keys(Keys.TAB) | 制表鍵TAB |
send_keys(Keys.ESCAPE) | 回退ESC |
send_keys(Keys.ENTER) | 回車 |
send_keys(Keys.Fn) | 鍵盤功能鍵Fn |
send_keys(Keys.CONTROL,‘a’) | 全選 |
send_keys(Keys.CONTROL,‘c’) | 複制 |
send_keys(Keys.CONTROL,‘x’) | 剪切 |
send_keys(Keys.CONTROL,‘v’) | 粘貼 |
警告框處理
彈窗警告框有三種,alert()、confirm()、prompt()
alert()框隻有一個确認按鈕,用來警告;confirm()用于确認,有是/否的選項,prompt()可以用來輸入文本。
方法 | 說明 |
---|---|
switch_to_alert() | 切換到彈窗 |
text | 擷取對話框文本值 |
accept() | 接受彈窗報警 |
dismiss() | 解除彈窗報警 |
send_keys() | 輸入值(隻适用于prompt) |
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('...')
browser.find_element_by_xpath('...')
#切換到彈窗
alert = browser.switch_to_alert()
# 列印警告框文本
print(alert.text)
#若為alert彈窗
alert.accept()# 接受彈窗
#若為confirm彈窗
alert.accept()# 确認
alert.dismiss()# 取消
#若為prompt
alert.send_keys('11111')
alert.accept()# 輸入11111并送出
alert.dismiss()# 解除警告
下拉框處理
selenium中對下拉框有專門的處理,需要用到下拉框的類Select
from selenium.webdriver.support.select import Select
方法 | 說明 |
---|---|
select_by_value() | 通過value屬性選擇 |
select_by_index() | 通過索引選擇,從0開始 |
select_by_visible_text() | 通過可見的文本進行選擇 |
關閉浏覽器
方法 | 說明 |
---|---|
quit() | 關閉所有視窗 |
close() | 關閉單個視窗 |
Reference
https://blog.csdn.net/wangshufen20091651/article/details/82897199
https://blog.csdn.net/weixin_36279318/article/details/79475388
http://www.testclass.net/selenium_python/selenium3-browser-driver/
https://blog.csdn.net/u010694922/article/details/79485003
https://blog.csdn.net/chenjuan0530/article/details/79553157