天天看點

Python使用selenium進行浏覽器賬戶測試

Python使用selenium進行浏覽器賬戶測試

文章目錄

  • ​​Python使用selenium進行浏覽器賬戶測試​​
  • ​​一、簡介​​
  • ​​二、使用requests進行初步測試​​
  • ​​三、使用selenium進行自動化測試​​
  • ​​四、效果展示​​
  • ​​五、總結​​

一、簡介

這裡,我們将使用Python的selenium子產品對某個網站的賬戶進行自動化測試。

​​​https://djs0pkeif39feujmxds.appdjujengbjnsdbbsdbsb20.com/register​​

Python使用selenium進行浏覽器賬戶測試

二、使用requests進行初步測試

首先使用Python的requests子產品進行初步的檢測。

import requests


url = "https://djs0pkeif39feujmxds.appdjujengbjnsdbbsdbsb20.com/register"
res = requests.get(url)
print(res.content.decode())      

三、使用selenium進行自動化測試

在使用Python的selenium子產品進行自動化測試的同時,也對滑塊進行了自動的驗證測試。

import time
from selenium import webdriver
from selenium.webdriver import ActionChains
from  selenium.webdriver.common.by  import  By
import random


url = "https://djs0pkeif39feujmxds.appdjujengbjnsdbbsdbsb20.com/register"
num_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

while True:
    str000 = ''
    for i in range(8):
        str000 += str(random.sample(num_list, 1)[0])

    driver= webdriver.Chrome() 
    driver.get(url=url)
    time.sleep(3)
    driver.find_elements(by=By.CLASS_NAME, value='van-field__control')[0].send_keys(str000)
    time.sleep(0.2)
    driver.find_elements(by=By.CLASS_NAME, value='van-field__control')[1].send_keys('yxhu' + str000 + 'flgz')
    time.sleep(0.2)
    driver.find_elements(by=By.CLASS_NAME, value='van-field__control')[2].send_keys('flgz' + str000 + 'yxhu')
    time.sleep(0.2)
    driver.find_element(by=By.XPATH, value='//*[@id="app"]/div[1]/div/div/div/div[2]/button').click()
    time.sleep(1.4)
    try:
        driver.find_element(by=By.XPATH, value='/html/body/div[3]/div[2]/button[2]').click()
    except Exception as e:
        print(e)
    else:
        print('success')
    finally:
        print('finally')
    time.sleep(1)
    slider = driver.find_element(by=By.XPATH, value='//*[@id="nc_2_n1z"]')

    # 解決特征識别的代碼
    script = 'Object.defineProperty(navigator, "webdriver", {get: () => false,});'
    driver.execute_script(script)

    # 滑塊解鎖
    action = ActionChains(driver)
    action.click_and_hold(slider)    # 按住
    action.move_by_offset(954, 0)    # 往右偏移248個像素
    action.release()                 # 釋放滑鼠
    action.perform()                 # 執行
    time.sleep(10)

    try:
        domwords = driver.find_element(by=By.XPATH, value='/html/body/div[3]/div[1]')
    except Exception as e:
        print(e)
    else:
        print(domwords.text)
        if domwords.text == "邀請碼錯誤或者已過期":
            driver.quit()
            continue

    driver.find_element(by=By.XPATH, value='/html/body/div[3]/div[2]/button[2]').click()
    time.sleep(10)
    driver.find_element(by=By.XPATH, value='//*[@id="app"]/div[1]/div/div/div/div[6]/div[1]/div[3]/button[1]').click()

    time.sleep(10)

    driver.quit()      

四、效果展示

請參見哔哩哔哩視訊:

​​​https://www.bilibili.com/video/BV1P44y1P7mc?spm_id_from=333.999.0.0​​

五、總結

在進行測試的時候,主要是使用了路徑的鎖定以及滑塊的處理,經過這次實踐,我對于selenium的了解更深一層了,學些到了不少東西,值得記錄一下。

while True:
    str000 = ''
    for i in range(8):
        str000 += str(random.sample(num_list, 1)[0])

    driver= webdriver.Chrome() 
    driver.get(url=url)
    time.sleep(3)
    driver.find_elements(by=By.CLASS_NAME, value='van-field__control')[0].send_keys(str000)
    time.sleep(0.2)
    driver.find_elements(by=By.CLASS_NAME, value='van-field__control')[1].send_keys('yxhu' + str000 + 'flgz')
    time.sleep(0.2)
    driver.find_elements(by=By.CLASS_NAME, value='van-field__control')[2].send_keys('flgz' + str000 + 'yxhu')
    time.sleep(0.2)
    driver.find_element(by=By.XPATH, value='//*[@id="app"]/div[1]/div/div/div/div[2]/button').click()
    time.sleep(1.4)
    try:
        driver.find_element(by=By.XPATH, value='/html/body/div[3]/div[2]/button[2]').click()
    except Exception as e:
        print(e)
    else:
        print('success')
    finally:
        print('finally')
    time.sleep(1)
    slider = driver.find_element(by=By.XPATH, value='//*[@id="nc_2_n1z"]')

    # 解決特征識别的代碼
    script = 'Object.defineProperty(navigator, "webdriver", {get: () => false,});'
    driver.execute_script(script)

    # 滑塊解鎖
    action = ActionChains(driver)
    action.click_and_hold(slider)    # 按住
    action.move_by_offset(954, 0)    # 往右偏移248個像素
    action.release()                 # 釋放滑鼠
    action.perform()                 # 執行
    time.sleep(10)

    try:
        domwords = driver.find_element(by=By.XPATH, value='/html/body/div[3]/div[1]')
    except Exception as e:
        print(e)
    else:
        print(domwords.text)
        if domwords.text == "邀請碼錯誤或者已過期":
            driver.quit()
            continue
    driver.find_element(by=By.XPATH, value='/html/body/div[3]/div[2]/button[2]').click()
    time.sleep(10)
    driver.find_element(by=By.XPATH, value='//*[@id="app"]/div[1]/div/div/div/div[6]/div[1]/div[3]/button[1]').click()
    time.sleep(10)
    driver.quit()