安裝Edge瀏覽器及Selenium IDE測試工具
這里使用的是Edge瀏覽器,大家可以使用自己的瀏覽器,不過拓展里要有Selenium IDE,否則無法進行后續操作
點擊鏈接下載並安裝Edge瀏覽器下載 Microsoft Edge Web 瀏覽器 | Microsoft
打開瀏覽器,點擊瀏覽器右側工具欄,點擊擴展
在點擊左側的獲取 Microsoft Edge 擴展,然后搜索“selenium”,選擇Selenium IDE安裝。
安裝之后可以在右上角看到Selenium IDE圖標。
使用Selenium IDE
首先打開Selenium IDE
創建項目
點擊“create a new project”,在彈出的頁面輸入項目名稱“test01”
Selenium IDE界面說明
①運行所有:運行一個測試案例集中所有案例。
②運行:運行當前選定的測試案例。
③案例集列表。
④用來填寫被測試網站里的地址。
⑤當前選中命令對應參數。
⑥日志/參考。
⑦測試腳本。
⑧跳過當前指令。
⑨速度控制:控制案例的運行速度。
⑩設置斷點。
⑪暫停/恢復案例執行。
⑫錄制:點擊后可以記錄你對瀏覽器的操作。
Selenium IDE的簡單使用
錄制腳本
點擊右側REC即可開始錄制腳本。一般錄制完腳本后,需要在運行工具中重跑腳本測試,去掉一些無用或異常的測試命令。
結束錄制后,選擇用例test01右側的三個點即可彈出選擇列表。
導出腳本
導出可以選擇Java、JavaScript、python等語言,這里我們以python為例
PyCharm中的配置
安裝PyCharm模塊selenium
用PyCharm打開導出的python文件,源代碼如下:
# Generated by Selenium IDE import pytest import time import json from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.support import expected_conditions from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
class TestTest01(): def setup_method(self, method): self.driver = webdriver.Chrome() self.vars = {}
def teardown_method(self, method): self.driver.quit()
def test_test01(self): self.driver.get("https://www.baidu.com/") self.driver.set_window_size(1088, 816) self.driver.find_element(By.ID, "kw").send_keys("selenium") self.driver.find_element(By.ID, "kw").send_keys(Keys.ENTER)
|
去掉無用的腳本
添加瀏覽器驅動
l 先去瀏覽器設置里看一下自己的瀏覽器版本;
l 再下載對應的驅動;
l 修改瀏覽器驅動的路徑,后面路徑換成自己的路徑就可以了
l 最后運行程序就會自動打開瀏覽器進行相應的測試操作
使用Selenium進行Python開發
環境安裝
下載安裝selenium
pip install selenium -i https://mirrors.aliyun.com/pypi/simple/
瀏覽器創建
Selenium支持非常多的瀏覽器,如Chrome、Firefox、Edge等,還有Android、BlackBerry等手機端的瀏覽器。另外,也支持無界面瀏覽器PhantomJS。
from selenium import webdriver
browser = webdriver.Chrome()
browser = webdriver.Firefox()
browser = webdriver.Edge()
browser = webdriver.PhantomJS()
browser = webdriver.Safari()
元素定位
webdriver 提供了一系列的元素定位方法,常用的有以下幾種:
定位一個元素 |
定位多個元素 |
含義 |
find_element_by_id |
find_elements_by_id |
通過元素id定位 |
find_element_by_name |
find_elements_by_name |
通過元素name定位 |
find_element_by_xpath |
find_elements_by_xpath |
通過xpath表達式定位 |
find_element_by_link_text |
find_elements_by_link_tex |
通過完整超鏈接定位 |
find_element_by_partial_link_text |
find_elements_by_partial_link_text |
通過部分鏈接定位 |
find_element_by_tag_name |
find_elements_by_tag_name |
通過標簽定位 |
find_element_by_class_name |
find_elements_by_class_name |
通過類名進行定位 |
find_elements_by_css_selector |
find_elements_by_css_selector |
通過css選擇器進行定位 |
注意:
1、find_element_by_xxx找的是第一個符合條件的標簽,find_elements_by_xxx找的是所有符合條件的標簽。
2、根據ID、CSS選擇器和XPath獲取,它們返回的結果完全一致。
3、另外,Selenium還提供了通用方法find_element(),它需要傳入兩個參數:查找方式By和值。實際上,它就是find_element_by_id()這種方法的通用函數版本,比如find_element_by_id(id)就等價於find_element(By.ID, id),二者得到的結果完全一致。
實例演示
假如有一個web頁面,通過前端工具查看到一個元素的屬性是這樣的。
<html
<head
<body link="#0000cc"
<a href="/" rel="external nofollow" onmousedown="return c({'fm':'tab','tab':'logo'})"
<form name="f" action="/s"
<span </span
<input name="wd" value="" maxlength="255" autocomplete="off"
通過id定位:
dr.find_element_by_id("kw")
通過name定位:
dr.find_element_by_name("wd")
通過class name定位:
dr.find_element_by_class_name("s_ipt")
通過tag name定位:
dr.find_element_by_tag_name("input")
通過xpath定位,xpath定位有N種寫法,這里列幾個常用寫法:
dr.find_element_by_xpath("//*[@]")
dr.find_element_by_xpath("//*[@name='wd']")
dr.find_element_by_xpath("//input[@]")
dr.find_element_by_xpath("/html/body/form/span/input")
dr.find_element_by_xpath("//span[@]/input")
dr.find_element_by_xpath("//form[@]/span/input")
dr.find_element_by_xpath("//input[@ and @name='wd']")
通過css定位,css定位有N種寫法,這里列幾個常用寫法:
dr.find_element_by_css_selector("#kw")
dr.find_element_by_css_selector("[name=wd]")
dr.find_element_by_css_selector(".s_ipt")
dr.find_element_by_css_selector("html body form span input")
dr.find_element_by_css_selector("span.soutu-btn input#kw")
dr.find_element_by_css_selector("form#form span input")
假如頁面上有如下一組文本鏈接
<a href="http://news.baidu.com" rel="external nofollow" name="tj_trnews" 新聞</a
<a href="http://www.hao123.com" rel="external nofollow" name="tj_trhao123" hao123</a
通過link text定位:
dr.find_element_by_link_text("新聞")
dr.find_element_by_link_text("hao123")
通過partial link text定位:
dr.find_element_by_partial_link_text("新")
dr.find_element_by_partial_link_text("hao")
dr.find_element_by_partial_link_text("123")
控制瀏覽器
常用的控制瀏覽器操作的一些方法
方法 |
說明 |
set_window_size() |
設置瀏覽器的大小 |
back() |
控制瀏覽器后退 |
forward() |
控制瀏覽器前進 |
refresh() |
刷新當前頁面 |
clear() |
清除文本 |
send_keys (value) |
模擬按鍵輸入 |
click() |
單擊元素 |
submit() |
用於提交表單 |
get_attribute(name) |
獲取元素屬性值 |
is_displayed() |
設置該元素是否用戶可見 |
size |
返回元素的尺寸 |
text |
獲取元素的文本 |