jenkins自動化測試,Selenium 自動測試軟件的使用(自動化操作)

 2023-10-08 阅读 22 评论 0

摘要:????????Selenium是一個用于Web應用程序測試的工具,很多時候可以拿來做自動化的功能,解放一些重復的事情,比如自動注冊、登錄、獲取信息、處理報表等等,都是可以自己去設計一個流程即可,使用它,先從安裝和配置開始!!

????????Selenium是一個用于Web應用程序測試的工具,很多時候可以拿來做自動化的功能,解放一些重復的事情,比如自動注冊、登錄、獲取信息、處理報表等等,都是可以自己去設計一個流程即可,使用它,先從安裝和配置開始!!

pip install Selenium

jenkins自動化測試。由于是用于web應用,需要下載瀏覽器不同版本對應的驅動(ChromeDriver),以Chrome為例,先查看版本:?chrome://version/

Google Chrome?? ?94.0.4606.71 (正式版本) (64 位) (cohort: Stable)

selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 89
Current browser version is 94.0.4606.71 with binary path C:\Program Files (x86)\Google\Chrome\Application\chrome.exe

自動化的基本原理?查看到我的Chrome版本是94.0.4606(中間默認就升級了),所以以前下載的?ChromeDriver版本就低了,需要下載對應的版本:
ChromeDriver Mirroricon-default.png?t=L892https://npm.taobao.org/mirrors/chromedriver/
或者使用Firefox瀏覽器:https://github.com/mozilla/geckodriver/releases

配置環境變量
比如: E:\MyChromeDriver, 把下載好的放進這個目錄下
設置環境變量:系統變量–>Path,將“ E:\MyChromeDriver”目錄添加到Path的值中即可

安裝和配置好之后就可以使用它了,使用它最關鍵在于如何定位元素

Selenium。定位一個元素

定位多個元素說明
find_element_by_idfind_elements_by_id通過元素id定位
find_element_by_namefind_elements_by_name通過元素name定位
find_element_by_xpathfind_elements_by_xpath通過xpath表達式定位
find_element_by_link_textfind_elements_by_link_text通過完整超鏈接的文本定位
find_element_by_partial_link_textfind_elements_by_partial_link_text通過部分鏈接的文本定位
find_element_by_tag_namefind_elements_by_tag_name通過標簽定位
find_element_by_class_namefind_elements_by_class_name通過類名進行定位
find_element_by_css_selectorfind_elements_by_css_selector通過css選擇器進行定位

例,通過自動打開百度,自定義搜索并分別點開鏈接查看文章

from selenium import webdriver
from time import sleepdef main():mydriver = 'E:\MyChromeDriver\chromedriver.exe'browser = webdriver.Chrome(executable_path = mydriver)browser.get('https://www.baidu.com')browser.set_window_size(1800,1200)browser.find_element_by_id("kw").send_keys("日本核污水")browser.find_element_by_id("su").click()sleep(2)#有時需要停留下,不然內容還沒有出來,定位不到就報錯#print(browser.title)#print(browser.find_element_by_class_name("nums_text").text)titles = browser.find_elements_by_xpath('//div/h3/a')for t in titles:print(t.text)ts=browser.find_element_by_link_text(t.text)ts.click()sleep(1)#print(browser.find_element_by_xpath("//span[@class='nums_text']").text)sleep(5)#browser.quit()if __name__ == '__main__':main()

如果是有框架的情況,需要進行切換才能定位,比如自動登錄126郵箱

from selenium import webdriver
from time import sleepdef main():mydriver = 'E:\MyChromeDriver\chromedriver.exe'browser = webdriver.Chrome(executable_path = mydriver)browser.get('https://126.com')browser.set_window_size(1800,1200)sleep(2)xf = browser.find_element_by_xpath("//div[@id='loginDiv']/iframe")#由于iframe的id是動態的,所以先從它的上級元素來定位到本身browser.switch_to.frame(xf)browser.find_element_by_name("email").send_keys("tony")browser.find_element_by_name("password").send_keys("12345678")browser.find_element_by_id("dologin").click()browser.switch_to.default_content()sleep(5)#browser.quit()if __name__ == '__main__':main()

appium安卓自動化測試、send_keys模擬鍵盤的一些示例

send_keys(Keys.BACK_SPACE)刪除鍵
send_keys(Keys.SPACE)空格鍵
send_keys(Keys.TAB)制表鍵
send_keys(Keys.ESCAPE)回退鍵(Esc鍵)
send_keys(Keys.ENTER)回車鍵
send_keys(Keys.CONTROL,‘a’)全選(Ctrl+A)
send_keys(Keys.CONTROL,‘c’)復制(Ctrl+C)
send_keys(Keys.CONTROL,‘x’)剪切(Ctrl+X)
send_keys(Keys.CONTROL,‘v’)粘貼(Ctrl+V)
send_keys(Keys.F1…Fn)功能鍵 F1…Fn

另外有些網站禁止使用Selenium,可以通過js的window.navigator.webdriver來判斷,如果是true就是代表通過Selenium在訪問
熟悉js的可以使用下面這個來修改屬性為false:

Object.defineProperties(navigator, {webdriver:{get:()=>false}});

不想讓瀏覽器顯示“chrome正受到自動測試軟件的控制”信息,可以通過選項進行隱藏

option = webdriver.ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation'])
browser = webdriver.Chrome(options=option)
browser.get('https://126.com')

如果是一些隱藏的標簽或界面,這個時候可以模擬鼠標操作,比如百度的設置下面的搜索設置,就需要鼠標放上去再顯示出來,下面設置每頁20條的示例

from selenium import webdriver
from time import sleep
from selenium.webdriver.common.action_chains import ActionChainsdef main():option = webdriver.ChromeOptions()option.add_experimental_option('excludeSwitches', ['enable-automation'])#隱藏“chrome正受到自動測試軟件的控制”browser = webdriver.Chrome(options=option)browser.get('https://www.baidu.com')browser.set_window_size(1800,1200)sleep(1)e1= browser.find_element_by_id("s-usersetting-top")#找到“設置”ActionChains(browser).move_to_element(e1).perform()#鼠標懸停在“設置”位置e2=browser.find_element_by_link_text("搜索設置")e2.click()sleep(1)e3=browser.find_element_by_id('nr_2')#每頁20條的設置保存e3.click()e4=browser.find_element_by_class_name('prefpanelgo')e4.click()sleep(1)browser.switch_to.alert.accept()#接受提示框browser.find_element_by_id("kw").send_keys("日本核污水")browser.find_element_by_id("su").click()sleep(2)titles = browser.find_elements_by_xpath('//div/h3/a')for t in titles:print(t.text)ts=browser.find_element_by_link_text(t.text)ts.click()sleep(1)sleep(50)#browser.quit()if __name__ == '__main__':main()

對Cookies的操作

for cookie in browser.get_cookies():print('%s----%s' %(cookie['name'],cookie['value']))kv={'name':"MyName",'value':'Tony'}
browser.add_cookie(kv)#添加鍵值對
browser.delete_cookie('GUEST_LANGUAGE_ID')#刪除這個鍵值
for cookie in browser.get_cookies():print('%s----%s' %(cookie['name'],cookie['value']))
browser.delete_all_cookies()#刪除全部的cookies

對js腳本的執行操作

#執行js腳本,滾動條定位到x,y坐標位置
browser.execute_script("window.scrollTo(100,800);")
browser.execute_script("alert('你好,中國')")

截圖操作

imgname=time.strftime("%Y%m%d%H%M%S", time.localtime())
browser.get_screenshot_as_file("D:\\"+imgname+".png")

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/129529.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息