怎么做潮牌网站,广东省城乡建设部网站首页,12306网站做的好还是百度做的好,公司做网页推广要多少钱1.selenium的工作原理
selenium的工作原理涉及以下主要组件和步骤#xff1a;
#xff08;1#xff09;WebDriver:这是selenium的核心组件#xff0c;它是一个用于控制浏览器的API。WebDriver提供了许多方法#xff0c;用于在浏览器中模拟用户操作。不同的浏览器需要相应…1.selenium的工作原理
selenium的工作原理涉及以下主要组件和步骤
1WebDriver:这是selenium的核心组件它是一个用于控制浏览器的API。WebDriver提供了许多方法用于在浏览器中模拟用户操作。不同的浏览器需要相应的WebDriver实现。
2浏览器驱动程序每个浏览器需要一个特定的驱动程序用于与WebDriver通信。例如Chrome浏览器需要Chorme DriverFirefox 浏览器需要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 jsonfrom selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWaitdef login():driver.get(https://kyfw.12306.cn/otn/resources/login.html)#最大化窗口driver.maximize_window()#获取扫码登录cookies保存至本地然后再从txt文件中读取保存到本地的cookie进行登录。该方法可能会在网站升级反爬操作后失效。driver.find_element(By.XPATH,//*[idJ-userName]).send_keys(13709290316)driver.find_element(By.XPATH,//*[idJ-password]).send_keys(428099ab)driver.find_element(By.XPATH,//*[idJ-login]).click()#切换到弹出窗口driver.implicitly_wait(20)time.sleep(10)login_btn_locdriver.find_element(By.XPATH,//*[idmodal]/div[2])driver.find_element(By.XPATH,//*[idid_card]).send_keys(0826)driver.find_element(By.XPATH,//*[idverification_code]).click()#手动输入验证码time.sleep(30)driver.find_element(By.XPATH,//*[idsureClick]).click()# print(用户登录)time.sleep(2)# 登录完成后就会跳转新窗口n driver.window_handlesprint(当前句柄, n)driver.switch_to.window(n[-1]) # driver切换至最新生产的页面# 1.cookie是用于保存用户的类似账号密码等个人信息并存储在浏览器中是一种数字形式的访问凭证。# 2.cookie有很多类型因此在使用cookie时要先判定其数据类型cookie driver.get_cookies()# print(cookie)# 获取list的cookiesjsonCookies json.dumps(cookie)# 转换成字符串保存with open(ticket_cookies.txt, w)as f:f.write(jsonCookies)# print(cookies保存成功)def buy():# 将鼠标悬停在车票页签上eledriver.find_element(By.XPATH,//*[idJ-chepiao]/a).click()#在driver浏览器上面创建selenium的鼠标类操作对象# actionActionChains(driver)
# 把鼠标移动到元素上#action.move_to_element(ele)driver.implicitly_wait(15)#点击买票driver.find_element(By.XPATH,//*[idmegamenu-3]/div[1]/ul/li[1]/a).click()driver.implicitly_wait(15)n driver.window_handlesprint(当前句柄, n)driver.switch_to.window(n[-1]) # driver切换至最新生产的页面time.sleep(3)# 选择出发地driver.find_element(By.XPATH,//*[idfromStationText]).click()driver.find_element(By.XPATH,//*[idul_list1]/li[29]).click()
# 选择到达地driver.find_element(By.XPATH,//*[idtoStationText]).click()driver.find_element(By.XPATH,//*[idul_list1]/li[2]).click()
# 选择日期,先清空文本框的值driver.find_element(By.XPATH,//*[idtrain_date]).clear()driver.find_element(By.XPATH,//*[idtrain_date]).send_keys(2023-08-09)driver.find_element(By.XPATH,//*[idquery_ticket]).click()driver.implicitly_wait(15)driver.find_element(By.XPATH,//*[idticket_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
# selenium4.8.2
selenium
pytest