0


selenium官网文档阅读总结(day 4)

1.selenium的工作原理

selenium的工作原理涉及以下主要组件和步骤:

(1)WebDriver:这是selenium的核心组件,它是一个用于控制浏览器的API。WebDriver提供了许多方法,用于在浏览器中模拟用户操作。不同的浏览器需要相应的WebDriver实现。

(2)浏览器驱动程序:每个浏览器需要一个特定的驱动程序,用于与WebDriver通信。例如,Chrome浏览器需要Chorme Driver,Firefox 浏览器需要Gecko Driver等。

(3)浏览器的实例化:在测试开始前,需要实例化一个特定浏览器的webdriver对象,这个webDriver对象可以控制一个真实的浏览器实例。

(4)模拟用户操作:通过webdriver对象,你可以执行一系列模拟用户操作,如点击按钮、输入文本、提交表单、导航到不同页面等。

(5)等待和定位元素:在自动化测试中,等待是一个重要的概念,你要等待页面加载完成、元素可见、元素存在等条件满足后再执行操作。同时,你需要定位要操作的html元素,比如按钮、输入框等。这可以通过各种定位策略如ID、类名、CSS选择器、xpath等来实现。

(6)断言和验证:在自动化测试中,你通常会使用断言来验证预期结果是否与实际结果一致,这可帮助你确认web应用程序的行为是否符合预期。

(7)测试框架集成:selenium可以与不同的测试框架(如junit,testNG,pytest等)集成,以实现更结构化和可管理的测试。

2.selenium实现12306网站自动购票

​
from selenium import webdriver
import time
import json

from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait

def login():
    driver.get('https://kyfw.12306.cn/otn/resources/login.html')
    #最大化窗口
    driver.maximize_window()
    #获取扫码登录cookies保存至本地,然后再从txt文件中读取保存到本地的cookie进行登录。该方法可能会在网站升级反爬操作后失效。
    driver.find_element(By.XPATH,'//*[@id="J-userName"]').send_keys('13709290316')
    driver.find_element(By.XPATH,'//*[@id="J-password"]').send_keys('428099ab')
    driver.find_element(By.XPATH,'//*[@id="J-login"]').click()
    #切换到弹出窗口
    driver.implicitly_wait(20)
    time.sleep(10)
    login_btn_loc=driver.find_element(By.XPATH,'//*[@id="modal"]/div[2]')
    driver.find_element(By.XPATH,'//*[@id="id_card"]').send_keys('0826')
    driver.find_element(By.XPATH,'//*[@id="verification_code"]').click()
    #手动输入验证码
    time.sleep(30)
    driver.find_element(By.XPATH,'//*[@id="sureClick"]').click()
    # print("用户登录")

    time.sleep(2)
    # 登录完成后就会跳转新窗口
    n = driver.window_handles
    print('当前句柄', n)
    driver.switch_to.window(n[-1])  # driver切换至最新生产的页面
    # '''1.cookie是用于保存用户的类似账号密码等个人信息并存储在浏览器中,是一种数字形式的访问凭证。
    # 2.cookie有很多类型,因此在使用cookie时要先判定其数据类型'''
    cookie = driver.get_cookies()
    # print(cookie)
    # 获取list的cookies
    jsonCookies = json.dumps(cookie)
    # 转换成字符串保存
    with open('ticket_cookies.txt', 'w')as f:f.write(jsonCookies)
    # print('cookies保存成功!')

def buy():
    # 将鼠标悬停在车票页签上
    ele=driver.find_element(By.XPATH,'//*[@id="J-chepiao"]/a').click()
    #在driver浏览器上面,创建selenium的鼠标类操作对象
   # action=ActionChains(driver)
#     把鼠标移动到元素上
    #action.move_to_element(ele)
    driver.implicitly_wait(15)
    #点击买票
    driver.find_element(By.XPATH,'//*[@id="megamenu-3"]/div[1]/ul/li[1]/a').click()
    driver.implicitly_wait(15)
    n = driver.window_handles
    print('当前句柄', n)
    driver.switch_to.window(n[-1])  # driver切换至最新生产的页面
    time.sleep(3)
    # 选择出发地
    driver.find_element(By.XPATH,'//*[@id="fromStationText"]').click()
    driver.find_element(By.XPATH,'//*[@id="ul_list1"]/li[29]').click()
#     选择到达地
    driver.find_element(By.XPATH,'//*[@id="toStationText"]').click()
    driver.find_element(By.XPATH,'//*[@id="ul_list1"]/li[2]').click()
#     选择日期,先清空文本框的值
    driver.find_element(By.XPATH,'//*[@id="train_date"]').clear()
    driver.find_element(By.XPATH,'//*[@id="train_date"]').send_keys('2023-08-09')
    driver.find_element(By.XPATH,'//*[@id="query_ticket"]').click()
    driver.implicitly_wait(15)
    driver.find_element(By.XPATH,'//*[@id="ticket_8d000G318206_08_23"]/td[13]/a').click()
#创建程序入口
if __name__=='__main__':
    driver = webdriver.Chrome()
    login()
    time.sleep(2)
    buy()

​

3.开源库管理

在python项目的project目录下放置一个requirements.txt文件,在terminal中运行命令:

pip install -r requirements.txt

就会自动安装文件中所有需要的库。

# This is a mirror image of Tsinghua University
# -i https://pypi.tuna.tsinghua.edu.cn/simple

# This is the specified version
# selenium==4.8.2
selenium
pytest

本文转载自: https://blog.csdn.net/jinyu_mobao/article/details/132204976
版权归原作者 芷月_wyy 所有, 如有侵权,请联系我们删除。

“selenium官网文档阅读总结(day 4)”的评论:

还没有评论