Python + Selenium Web自动化测试案列2--前台购物流程_自动化测试工具模拟登录网站进行购物测试-程序员宅基地

技术标签: python  selenium  

用户前台登录–>搜索商品–>加入购物车–>购物车结算–>添加收货地址

涉及知识点:
1、登录后进行等待和窗口最大化操作:

智能等待–隐式等待
driver.implicitly_wait(10)
窗口最大化
driver.maximize_window()

2、问题:脚本运行时好时坏(10次中8次成功,2次失败)

原因:脚本稳定性不够,由于页面响应时间不一致造成
解决方案:增加隐式等待 implicitly_wait(10)

智能等待–隐式等待:
优点:智能的判断,下一行代码应该等待多久;只需要写一次,后面所有代码都生效
缺点:有些特殊情况不起作用,例如页面没有重新加载,只是局部信息更新
若页面1s加载成功找到元素,则等待1s;若页面10s加载成功找到元素,则等待10s;若10s后,页面未加载成功找到元素,则抛出异常

3、driver.implicitly_wait(5)隐式等待 和 time.sleep(5)de 区别:

两者都是时间等待的作用
区别:
隐式等待是一种智能等待,可以自动判断需要等待多久,括号中的5表示最大等待时间五秒,如果5秒后页面UI人没有加载成功,抛出异常,而time.sleep(5)是指固定等待
隐式等待只需要在声明driver之后写一次代码,time.sleep在每次需要延时等待时,都要写重新写

4、find_element_by_class_name() 和 find_element_by_css_selector()的区别:

find_element_by_class_name() 不支持 同时用两个class name定位
find_element_by_css_selector() 支持使用多个class name定位,在每个class name前面加上小数点即可,例如".shopCar_btn_03.fl"
如果不确定多个class name中谁是唯一的,可采用此方法

5、问题:新窗口中的元素不能定位和操作

原因:点击某些连接,导致浏览器出现了新窗口,但selenium仍然工作在原来的窗口
解决方案:进行窗口切换
1、找到新窗口的句柄
new_windows = driver.window_handles[-1]
2、通过句柄切换到新窗口
driver.switch_to.window(new_windows)

6、find_element 和 find_elements 的区别:

find_element 找到页面中满足条件的第一个元素
find_elements 找到页面中所有满足条件的元素,然后通过下标选择第几个元素,经常用例组合class_name或者tag_name使用
可理解为:find_element() == find_elements()[0]

7、问题:如何选择下拉框中的选项

解决方案:定位找到元素后,将其强制转换成下拉框类型 Select(页面元素)
下拉框选择:调用select类中的方法
Select(页面元素).select_by_visible_text(“选项的文本值”)
Select(页面元素).select_by_.value(选项的value属性的值)
Select(页面元素).select_by_index(第几个选项)

8、问题:Select自动导包错误

解决方案:光标定位在Select上,Alt + Enter,选择import this name --> 选择导入 selenium.webdriver.support.select

代码:

# ###########################################################
# 用户前台登录-->搜索商品-->加入购物车-->购物车结算-->添加收货地址
# ###########################################################
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zeng_xt/article/details/106626833

智能推荐

Xgboost参数解释及调参_num_boost_round-程序员宅基地

文章浏览阅读4.1w次,点赞27次,收藏218次。General ParametersBooster ParametersTask Parameters首先xgboost有两种接口,xgboost自带API和Scikit-Learn的API,具体用法有细微的差别但不大。在运行 XGBoost 之前, 我们必须设置三种类型的参数: (常规参数)general parameters,(提升器参数)booster paramet..._num_boost_round

mysql 5.7 中文文档_Mysql 5.7 官方文档翻译-程序员宅基地

文章浏览阅读1.2k次。始于 2017年4月1日-愚人节1.1 MySQL 5.7 新功能本章节介绍了MySQL 5.7 新版本中新增、废弃、删除的功能。 在1.5章节 Section 1.5, “Server and Status Variables and Options Added, Deprecated, or Removed in MySQL 5.7” 中可以获得详细信息。.MySQL 5.7 新增功能MyS..._mysql官方文档 中文版

MPI并行编程_mimd和mpmd-程序员宅基地

文章浏览阅读2.6k次,点赞2次,收藏14次。1.MPI简介(回顾并行编程的四种模式)SIMD-单指令多数据处理器是“锁步”:每个处理器对不同数据同步执行单指令。SPMD-单程序多数据处理器的异步运行一个程序的个人副本。MIMD-多指令多数据处理器异步运行:每个处理器都有自己的数据和自己的指令。MPMD-多程序多数据处理器异步运行:每个处理器都有自己的数据和自己的程序。 (1)分布式内存和共享内存_mimd和mpmd

Win7、VS2010、OpenCV2.3.1 出现:“无法启动此程序,因为计算机中丢失tbb_debug.dll.尝试重新安装该(转)_无法启动此程序 因为计算机中丢失tbb.dll-程序员宅基地

文章浏览阅读6.9k次,点赞5次,收藏2次。问题描述:Win7、VS2010、OpenCV2.3.1 出现:“无法启动此程序,因为计算机中丢失tbb_debug.dll.尝试重新安装该程序以解决问题”。解决方法: (详见OpenCV中文网站论坛http://www.opencv.org.cn/forum/viewtopic.php?p=52223)论坛中提到的方法:方法一:下载tbb3.0,解压后,在其..\bin\_无法启动此程序 因为计算机中丢失tbb.dll

Oracle 11g网格控制器安装指南-程序员宅基地

文章浏览阅读99次。 先前对oracle 10g的网格控制器有着十分痛苦的使用经历,总是问题百出!先是安装需要打补丁,未升级前硬盘灯总是狂闪,然后CPU的I/O等待严重! 升级到10g的最高版本且在agent端安装好yast后,网格控制器的administration选项卡上只出现“系统服务”和“网络”两项!具体情况查看以下链接:http://www.itpub.net/thread-1497851-1-1...._oracle 11g emca -config dbcontrol db

网格去噪算法(two-step framework)_normal filter-程序员宅基地

文章浏览阅读4.1k次。http://www.cnblogs.com/shushen/p/5053588.html基于两步法的网格去噪算法顾名思义包含两个步骤:首先对网格表面的法向进行滤波,得到调整后的网格法向信息,然后根据调整后的法向更新顶点坐标位置,下面介绍三篇该类型的文章。  [Sun et al. 2007]文章首先介绍了当前法向滤波方法以及顶点坐标更新方法,然后提出自己的法向滤波方法和顶点坐标更_normal filter

随便推点

css 网页整体缩小_css实现缩放自适应网页--手机web-程序员宅基地

文章浏览阅读7.8k次。一.允许网页宽度自动调整: "自适应网页设计"到底是怎么做到的?其实并不难。 首先,在网页代码的头部,加入一行viewport元标签。viewport是网页默认的宽度和高度,上面这行代码的意思是,网页宽度默认等于屏幕宽度(width=device-width),原始缩放比 例(initial-scale=1)为1.0,即网页初始大小占屏幕面积的100%。 对于viewport属性,我是真正在接触..._如何实现网页小于一个宽度就全局缩小

Cheat Engine 教程( 1 - 9 通关 )_cheat engine教程-程序员宅基地

文章浏览阅读10w+次,点赞84次,收藏288次。精确值扫描点击教程(64位):欢迎使用 Cheat Engine 训练教程 (3.3)本教程将尝试讲解在游戏中作弊的一些基本知识. 并帮助你熟悉 Cheat Engine 的使用方法 (简称为CE). 请按下面的步骤开始.恭喜你!如果以上步骤没什么意外的话,进程列表窗口将会消失并且在 Cheat Engine 主界面的上方会显示选择的进程名称.好了,点击 "下一步" 按钮进入下一个步骤。_cheat engine教程

第四章、图像梯度处理_inceptionv3 laplacian 梯度处理-程序员宅基地

文章浏览阅读369次。基于Python的OpenCV学习第四章、图像梯度处理01_cv2.Sobelimport cv2img1 = cv2.imread('pie.png')# cv2.Sobel(image,ddepth,dx,dy,ksize)方法,返回图片梯度差异的图片。# 解释一下什么是梯度:# 水平梯度 = 右侧像素点的值 - 左侧像素点的值# 竖直梯度 = 下侧像素点的值 - 上侧像素点的值sobelx = cv2.Sobel(img1,cv2.CV_64F,1,0,ksize=3)# dde_inceptionv3 laplacian 梯度处理

基于java的户籍管理系统的设计与实现_《java语言课程实训》实训报告户籍管理系统的设计与实现-程序员宅基地

文章浏览阅读529次。当今社会人们生活质量越来越高,人们对生活品质的追求不断提升,对于孩子求学,变更住所等情况时有发生,因此对于户籍变动管理就显得十分重要,管理用户的户籍信息可以有效防止信息错乱,信息管理过程中出现问题可能会带来很多不必要的麻烦;因此,需要进行信息化对户籍信息进行管控。本系统主要设计出发点就是围绕着户籍管理方面来进行设计,开发一套符合现代社会需求户籍管理的系统平台,给用户更多的便利和实惠;系统主要包括了登陆模块,注册模块,用户模块,户籍模块,迁入出模块,身份管理模块,缴费模块等等,系统设计采用的是WEB开发模式_《java语言课程实训》实训报告户籍管理系统的设计与实现

锁、CAS操作和无锁队列的实现_c 语言cas-程序员宅基地

文章浏览阅读8k次,点赞3次,收藏36次。锁的机制锁和人很像,有的人乐观,总会想到好的一方面,所以只要越努力,就会越幸运;有的人悲观,总会想到不好的一方面,患得患失,所以经常会做不好事。我一直把前一个当作为我前进的动力和方向,快乐充实的过好每一天。 常用的锁机制也有两种: 1、乐观锁:假设不会发生并发冲突,每次不加锁而去完成某项操作,只在提交操作时,检查是否违反数据完整性。如果因为冲突失败就继续重试,直到成功为止。而乐观锁用到的机_c 语言cas

[Luogu] 高斯消元法-程序员宅基地

文章浏览阅读66次。https://www.luogu.org/problemnew/show/P3389模拟,消元#include <bits/stdc++.h>#define DB doubleconst int N = 110;const DB eps = 1e-7;DB A[N][N], Answer[N];int n;DB read() {DB..._高斯消元法luogu

推荐文章

热门文章

相关标签