selenium使用技巧


標簽(空格分隔): selenium


我們進行selenium的時候,就是通過webdriver,對瀏覽器做一些操作的:
webdriver,除了find操作,之外還有哪些方法和屬性呢?

  • 1.獲取當前窗口的title:
    driver.title
    什么是窗口的title呢?
    例如打開百度:(關閉按鈕,左邊的“百度一下,你就知道”)就是title
    百度tilte.png-48.5kB
  • 問題:我們獲取title有什么作用呢?
    答:
    1.進行判斷,是不是自己要測試的網頁;
    2.title也是測試的時候要測試的內容之一,也是一個檢查點,我們通過driver.title來獲取他,就可以進行判斷了;
    3.title會隨着網頁的跳轉不斷的變化的,我們在測試的時候,經常性做檢查;

問題:

from selenium import webdriver
driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get('http://www.baidu.com')
print(driver.title)
driver.find_element_by_id('kw').send_keys('淘寶')
print(driver.title)
driver.quit()

執行結果:
百度一下,你就知道
百度一下,你就知道

  • 問題:
    為什么一次性執行的時候,會兩次出現:百度一下,你就知道;結果是一樣的?
    而單步調試的時候是好的呢?

答案:
因為我們的程序執行比較快,執行完第一步之后,百度的淘寶,百度還沒有獲取到淘寶網站的元素,所以就顯示了百度的原來的;

遇到上述問題怎么解決呢?

import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get('http://www.baidu.com')
print(driver.title)
driver.find_element_by_id('kw').send_keys('淘寶')
driver.sleep(2)
print(driver.title)
driver.quit()

這樣是不是達到效果了;

  • 但是問題來了?為什么有了隱士等待了,還要sleep呢?
    敲黑板 :切記,切記!!!!!!
    implicity_wait()只針對find的方法有效,對獲取界面title是沒有效果的;所以這個地方他不會等,他一般是根據每個條件查找元素,切記,implicity_wait()對find方法有效;
  • 問題又來了,上述的如果用sleep怎么確定等待多長時間呢?有沒有更好的方法?
    搜索:淘寶,我們人來說的話,是不是只要有搜索的結果出來了,就表示肯定搜索的結果出來了,所以我們可以吧寫死的sleep可以變為這種方式:
    8C6E@U~1O}7LYY7R6J$F{D8.png-84.7kB
    我們可以在代碼,加入一行代碼:
    driver.find_element_by_id("")根據上的id 來定位;
    從而替換掉寫死的sleep()
  • 大家要明白這個工作的一個原理就好了;
  • driver.current_url獲取當前窗口的地址欄:
    dizhi.jpg-256.9kB
    這個大家指導就好了,用的不是特別的多;
  • driver.get_screenshot_as_file('ss1.png')
    截圖並保存成為文件;
    這種在什么情況下的會用到截圖呢?
    答案:就是在出錯,也就是說出現bug的時候,因為自動化測試,人不一直看着的,如果把出錯的內容,給保存下來,這樣比較好容易定位;
  • 一般自動化出問題,人還是要復現並跟進一個下的,如上述的driver.get_screenshot_as_file('ss1.png') 這時候截圖保存在哪里呢?
    其實我們是可以指定保存截圖的路徑的;
    想要查看我們的截圖保存路徑,可以查看pycharm的工作目錄,就會可保存在文件的工作目錄里面;
  • 同樣我們也可以對元素進行截圖:(對單個元素進行截圖)
    比如說:
    ele=driver.find_element_by_id('kw')

實用技巧2:

例如:如下的定位元素:
image.png-207.7kB
image.png-70.8kB
我們可以通過這個兩個來定位:如果上述的方式可以定位,幫我們節省一些時間,通常用於離自己很近的地方有ID的元素,實用這種方法;

實用上述截圖來定位元素,有什么缺點呢?
Xpath:只要路徑里面有個地方改動了,這樣就不好維護;
2.有的時候,通過右鍵復制的,是不行的,下次進來的時候,他ID是會變的,

常見的:

  • 通常不可見元素都是可以操作的
    如果確實需要改變窗口的大小
    size = driver.get_window_size()
    dirver.set_window_size(1100,size['height'])
    滾動頁面:
    driver.execute_script('window.scrollBy(250,0)')


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM