
selenium
蜀山客e
这个作者很懒,什么都没留下…
展开
-
Selenuim+Python之元素定位总结及实例说明
网页自动化最基本的要求就是要定位到各个元素,然后才能对该元素进行各种操作(输入,点击,清除,提交等),所以笔者今天来总结下Selenuim+Python最基本的几种定位方式及实例说明,希望能帮助到大家。以百度搜索输入框为例,具体说明各个定位方式的用法:(通过chrome浏览器查看元素或者搜狐浏览器的firebug查看,即可看到html源码)注意点:第三行的元素是灰色的,该元素是不可定位到的,下方会说明。<span class="bg s_ipt_wr quickdelete-wrap">原创 2020-11-27 14:53:10 · 463 阅读 · 0 评论 -
selenium用jquery改变元素属性
一、jQuery 语法jQuery 语法是通过选取 HTML 元素,并对选取的元素执行某些操作。1、基础语法:$(selector).action()选择符(selector)即,"查询"和"查找" HTML 元素jQuery 的 action() 执行对元素的操作简单理解:就是选择器来操作2、实例:$(this).hide() - 隐藏当前元素$("p").hide() - 隐藏所有 <p> 元素$("p.test").hide() - 隐藏所有 class="te原创 2020-11-26 14:21:13 · 515 阅读 · 0 评论 -
selenium玩转svg操作
写脚本发现页面有svg结构,里面的元素无法定位,查找很多资料,然后就记录下来初步尝试直接在页面中获取svg中包含元素的xpath,直接利用selenium方法访问,无法捕获到相关元素信息。SVG包含一些图形元素,比如line,rect,circle等,很多情况下我们可以点击SVG上的元素触发一些event,比如打开context menu、在一个pie里选择一个portion等。但是SVG在html看来是一个单独的元素,我们怎么点击svg里的元素呢?下面记录下 Firefox和Chrome上的方法(其他原创 2020-11-26 13:12:13 · 1711 阅读 · 0 评论 -
selnium远程机上传图片遇到的坑
一般上传图片方法采取方案如下:input标签的file类型上传图片,使用对象的sendkeys+路径方法使用js注入,再用使用对象的sendkeys+路径方法使用autolt生成的exe,打开对话框执行这个生成的exe脱离autolt上传,sendkeys方法,直接用鼠标键盘事件即可前几日做脚本开发任务,遇到一个很坑的问题,就是上传图片不是标准的上传控件,用的是百度的上传控件,我用三个方案本地都实现了图片上传,都远程机回归测试遇到了一个坑,就是远程机执行回归测试,都会报错找不到文件或者干脆au原创 2020-11-26 13:03:37 · 191 阅读 · 0 评论 -
Selenium+Python Web自动化
Selenium官方网站http://selenium-python.readthedocs.io/配置使用环境下载相应的浏览器驱动, Firefox 是默认的本文以 chrome 为主 ,放在scripts目录下ChromeDriver 官方下载地址 : 所有版本的 ChromeDriver一份简单的测试 demo 1 #coding=utf-8 2 from selenium import webdriver 3 import os 4 import time 5 # set li原创 2020-11-20 14:34:31 · 302 阅读 · 0 评论 -
Selenium常用API用法示例集--下拉框、弹窗、JS、文件上传和下载等
元素识别方法、一组元素定位、鼠标操作、多窗口处理、下拉框、文本域及富文本框、弹窗、JS、frame、文件上传和下载元素识别方法:1 driver.find_element_by_id()2 driver.find_element_by_name()3 driver.find_element_by_class_name()4 driver.find_element_by_tag_name()5 driver.find_element_by_link_text()6 driver.find_ele原创 2020-11-20 14:18:48 · 304 阅读 · 0 评论 -
Selenium免登录、等待、unittest、PO模型
1、免登录在进行测试的过程中难免会遇到登录的情况,给测试工作添加了工作量,本文仅提供一些思路供参考解决方式:手动请求中添加cookies、火狐的profile文件记录信息实现、人工介入、万能验证码、去掉验证码1.1、手动在请求中添加cookies信息 1 url = "http://www.baidu.com" 2 driver = webdriver.Firefox() 3 driver.get(url) 4 time.sleep(3) 5 #添加cookies的方式 6 7 c1原创 2020-11-20 14:04:31 · 533 阅读 · 0 评论 -
Selenium常用方法及函数、txt参数化
常用方法及函数:1.表单的提交方法:submit解释:查找到表单(from)直接调用submit即可实例:driver.find_element_by_id(“form1”).submit()2.获取CSS的属性值方法:value_of_css_property(css_name)实例:driver.find_element_by_css_selector(“input.btn”).value_of_css_property(“input.btn”)3.获取元素的属性值(一组元素中非常实用)原创 2020-11-20 13:37:49 · 562 阅读 · 0 评论 -
selenium---判断元素是否可见
定位元素过程中,经常会遇到元素明明定位成功了,但是报错却提示确实没有找到,这就是面试过程中经常遇到的元素不可见的问题。元素不可见首先要想到是什么属性导致元素不可见,然后我们可以通过修改这个属性进行确认。 hidden=“hidden” 元素的可见与不可见通过hidden这个属性来控制的。在一个元素前面加上这个属性就会导致当前元素不可见。这里举个小栗子:这里先找个正常的输入框<html><body>用户名:<br><input type="te原创 2020-11-14 14:41:43 · 2971 阅读 · 2 评论 -
selenium原理应用 - 利用requests模拟selenium驱动浏览器
前言selenium是一个web自动化测试的开源框架,它支持多语言:python/java/c#…selenium支持多语言,是因为selenium与浏览器驱动之间是通过http协议进行通信的。只关心通信的数据是否能够正确解读 ,并不关心这个数据是从哪个客户端来。无论来自python\java,还是jmeter,postman都没有问题。本篇文章中,以requests做为客户端,跳过selenium,直接与谷歌浏览器驱动(chromedriver)进行http通信,驱动chrome浏览器去执行命令。原创 2020-11-09 13:39:29 · 513 阅读 · 0 评论 -
Python+Selenium使用Page Object实现页面自动化测试
Page Object模式是Selenium中的一种测试设计模式,主要是将每一个页面设计为一个Class,其中包含页面中需要测试的元素(按钮,输入框,标题 等),这样在Selenium测试页面中可以通过调用页面类来获取页面元素,这样巧妙的避免了当页面元素id或者位置变化时,需要改测试页面代码的情况。 当页面元素id变化时,只需要更改测试页Class中页面的属性即可。Page Object模式是一种自动化测试设计模式,将页面定位和业务操作分开,分离测试对象(元素对象)和测试脚本(用例脚本),提高用例的可维护原创 2020-11-06 13:01:53 · 466 阅读 · 0 评论 -
selenium 鼠标滑动操作验证码
selenium 鼠标点击操作比较简单,这里就不介绍了,主要说一下鼠标滑动(按住并滑动),经常用于解决自动化操作的滑动验证码下面举个简单的例子,比如这种验证码:代码:div = driver.find_element_by_id("nc_1_n1z")ActionChains(driver).click_and_hold(on_element=div).perform()time.sleep(0.15)ActionChains(driver).move_to_element_with_offs原创 2020-10-26 14:32:01 · 1008 阅读 · 1 评论 -
selenium获取cookie实现免登陆,登录百度云后文件的上传
测试需求:1.selenium实现保持百度云登录态,2.上传文件到百度云保持登录态方法1:获取本地保存的cookieprofile_dir = r"C:\Users\v_yddchen\AppData\Roaming\Mozilla\Firefox\Profiles\9f5vispa.default" profile = webdriver.FirefoxProfile(profile_dir) profile.set_preference('browser.download.d原创 2020-10-22 13:55:21 · 1136 阅读 · 1 评论 -
selenium定位元素后,click不生效的问题。
实现自动化登录微云账号。问题分析firefox_driver = webdriver.Firefox() firefox_driver.get("https://www.weiyun.com/") firefox_driver.implicitly_wait(10) # 登录账号 firefox_driver.switch_to.frame("qq_login_iframe") firefox_driver.find_element_by_css_selector("原创 2020-10-21 14:27:30 · 3305 阅读 · 0 评论 -
selenium自动化测试之浏览器滚动条和DIV内嵌滚动条
1.浏览器滚动条需要借助js方法1:execute_script("window.scrollBy(x,y)") # 必要参数x,y,x指横向移动的像素,y指竖向方法2:driver.execute_script("document.documentElement.scrollTop=10000") # scrollTop=0指的是滑动到顶部,10000指滑动到底部代码实现打开微云首页,点击[微云服务协议],分别向下滑动一点和滑动到底。注意打开协议后,需要匹配到新的window_hand原创 2020-10-21 14:03:05 · 1434 阅读 · 2 评论 -
selenium自动化测试之单选、下拉列表、alert弹窗处理、页面刷新
测试内容1.百度首页-设置-搜索设置,涉及下拉列表处理和单选、弹窗处理2.百度首页-设置-高级搜索,涉及页面刷新后的处理、下拉列表代码实现firefox_driver = webdriver.Firefox() firefox_driver.get("https://www.baidu.com/") firefox_driver.implicitly_wait(10) set_all = firefox_driver.find_element_by_css_selecto原创 2020-10-21 13:42:26 · 483 阅读 · 0 评论 -
selenium元素定位之-css定位
css定位比较灵活,一般情况下定位速度要比XPTAH要快。基础语法1.选择器 注意class属性值是包含某值2.节点关系定位3.谓语实例以百度首页为例,定位一些元素。旧版本的firebug和firefox也可以,但是现在这两个插件已经被遗弃,推荐使用try xpath来验证自己的选择器是否正确。a.根据元素属性定位a[name=tj_trnews] 如果找到的话,在网页上会红色虚线框标注找到的元素(way=querySelector如果找到多个符合条件的元素,只会返回第一个,qu原创 2020-10-21 13:34:57 · 617 阅读 · 0 评论 -
selenium鼠标、键盘操作常用API
输入框操作el.clear() 清除输入框内容el.send_keys() 输入中文符时可能会乱码,可在输出内容前加[u],或者声明编码格式鼠标事件单击el.click()提交表单 submit()from selenium.webdriver.comm.action_chains import ActionChains双击double_click(self, on_element=None)右击context_click(self, on_element=None)拖动drag_原创 2020-10-21 13:27:12 · 286 阅读 · 0 评论 -
定时器--强制等待、显式等待和隐式等待
1.强制等待time.sleep(),单位s。等待时,程序停止运行,直到设置的等待时间结束。当等待时间设置为5s或者以上时,程序运行会报错。2.隐式等待device_a.implicitly_wait(5) 单位s. 在设置等待时间内,程序一直在尝试查找元素,直到超时结束。此项设置,全局有效。3.显式等待from selenium.webdriver.support.ui import WebDriverWaitWebDirverWait(driver,timeout,poll_fre原创 2020-10-17 14:23:51 · 397 阅读 · 0 评论 -
Python+selenium自动化生成测试报告
批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的。unittest里面是不能生成html格式报告的,需要导入一个第三方的模块:HTMLTestRunner一、导入HTMLTestRunner1.这个模块下载不能通过pip安装了,只能下载后手动导入,下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html2.Download下HTMLTestRunner.py文件就是我们需要下载的包。3原创 2020-10-10 15:27:50 · 3264 阅读 · 0 评论 -
构建一个完整的Selenium框架
1、新建项目,结构如图:注意:整个项目除了最外层的是文件夹,其他的都是包(package)。也就是说每一个文件夹下面都是有一个_init _.py文件的。只有包才能顺利的用import导入哦~~2、文件介绍及代码baseinfo这里面只有一个__init __.py文件,里面放的是常量:比如邮件的设置信息、发送的固定URL等。# coding: utf-8'''发送邮件参数'''Smtp_Server = 'smtp.mxhichina.com'Smtp_Sender = 'abc@tene原创 2020-10-10 15:03:27 · 323 阅读 · 0 评论 -
selenium---屏幕截图
前言通常在执行自动化用例的时候,是不会一直在旁边检测,报错的时候想要留下一些证据给开发,可以在代码中进行添加截图操作,通过截图把我们想要的内容截图下来。那selenium中如何操作呢?截图selenium截图方法有很多种,简单的列举几种:方法一:获取当前屏幕截图: get_screenshot_as_file(filename) ,filename为图片名称,需要填写完整路径。这里需要注意图片后缀只能是png,如果是jpg或者其他格式的话,会报错,但是程序还是回正常执行。报错内容:UserW原创 2020-10-09 13:19:57 · 5531 阅读 · 0 评论 -
看完你就掌握——selenium的等待条件
selenium的显示等待在进行UI自动化测试的时候,我们为了保持用例的稳定性,往往要设置显示等待,显示等待就是说明确的要等到某个元素的出现或者元素的某些条件出现,比如可点击、可见等条件,如果在规定的时间之内都没有找到,那么就会抛出Exception.上面是我用selenium写的一个测试用例,展示了selenium中显示等待的使用方式,其中会使用到expected_conditions模块和WebDriverWait类,注意这里expected_conditions是一个py文件的文件名,也就是一个原创 2020-09-24 14:54:03 · 2461 阅读 · 0 评论 -
基于python2+selenium3+pytest4的UI自动化框架
环境:Python2.7.10,selenium3.141.0,pytest4.6.6,pytest-html1.22.0,Windows-7-6.1.7601-SP1特点:二次封装了selenium,编写Case更加方便。采用PO设计思想,一个页面一个Page.py,并在其中定义元素和操作方法;在TestCase中直接调用页面中封装好的操作方法操作页面。一次测试只启动一次浏览器,节约时间提高效率(适合公司业务的才是最好的)。增强pytest-html报告内容,原创 2020-09-21 14:02:43 · 778 阅读 · 0 评论 -
Python selenium自动化测试框架实战--登录测试案例
本文为Python自动化测试框架基础入门篇,主要帮助会写基本selenium测试代码又没有规划的同仁。本文应用到POM模型、selenium、unittest框架、configparser配置文件、smtplib邮件发送、HTMLTestRunner测试报告模块结合登录案例实现简单自动化测试框架项目主要包括以下几个部分 conif.ini 放置配置文件例如:myunit.py文件放置的浏览器操作代码import unittestfrom selenium import webdriver原创 2020-09-19 17:12:52 · 1217 阅读 · 2 评论 -
Selenium-模块化与参数化
模块化与参数化-163邮箱登录在创建函数或类方法时,为它们设置入参,从而可以根据不同参数执行相应操作创建test_email文件,开始模块化操作实现邮箱自动化测试项目,每一条测试用例都需要有登录跟退出操作.大部分用例都是在登录之后进行的.创建module.py文件存放登录动作与退出动作再次修改test_eamil.py文件,调用Email类中的login(),logout()方法,模块化结束.开始参数化登录的步骤是固定了,但是测试数据是不同的,需要login()方法参数化,修改module原创 2020-09-19 13:58:44 · 414 阅读 · 0 评论 -
高阶测试人必须会的Selenium-Unittest单元测试框架
1、Unittest介绍为什么要学习单元测试框架测试用例的组织与运行需要单元测试框架的参与,从而满足不同测试场景的需要,单元测试框架提供了丰富的比较方法:实际结果与预期结果的对比==测试结果单元测试框架提供了丰富的日志:给出测试用例失败与通过的数目及执行失败的原因常见的单元测试框架有哪些Doctest、unittest、pytest、nose等等Java–》junit(testng)、C+±-》 googleTest、c#–》nunit2、Unittest核心组件3、Unittest工作原原创 2020-09-19 13:39:14 · 273 阅读 · 0 评论 -
selenium---处理SSL证书错误问题
前言在我们访问网站的过程中,有时候会遇到您的连接不是私密连接。正常操作是点击高级,然后我们在继续访问,那么在selenium中,我们需要一步步定位?过程比较繁琐,最主要的是,有时候只有第一次才会出现,后续访问就没有了。这种现象叫做什么呢?那么selenium如何处理?错误现象访问网站会遇到您的连接不是私密连接。一般遇到的现象如图,其实这是SSL证书错误的一种表现,浏览器的一种安全机制引起的问题,一般我们在访问URL和HTTPS进行访问时,浏览器会提示这种错误。前面简单的解释了试通过浏览器来返回的常原创 2020-09-17 13:03:51 · 4153 阅读 · 0 评论 -
selenium3 web自动化测试框架 —— 数据驱动简介及基础使用
1.数据驱动概述相同的测试脚本使用不同的测试数据来执行,测试数据和测试行为完全分离,这样的测试脚本设计模式称为数据驱动。简单的理解为数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。通过使用数据驱动测试的方法,可以在需要验证多组数据测试场景中,使用外部数据源实现对输入输出与期望值的参数化,避免在测试中使用硬编码的数据。这种方法对于测试步骤相同而使用不同的输入值和期望值的测试场景尤为重要实施数据驱动测试步骤如下:(1)编写测试脚本,脚本需要支持从程序对象、文件或数据库读入测试数据(2)将测试原创 2020-09-15 14:19:26 · 282 阅读 · 0 评论 -
selenium3 web自动化测试框架——页面基础操作、元素定位方法封装、页面操作方法封装
学习目的:掌握自动化框架中需要的一些基础web操作正式步骤:使用title_contains检查页面是否正确# -*- coding:utf-8 -*-import timefrom selenium import webdriverfrom selenium.webdriver.support import expected_conditions as ECdr = webdriver.Chrome()url = "https://www.baidu.com"dr.get(url)原创 2020-09-15 14:09:01 · 414 阅读 · 0 评论 -
selenium3 web自动化测试框架 ——项目实战中PO模型的设计与封装
po模型设计思想Page Object 模式主要是将每个页面设计为一个class,其中包含页面中的需要测试的元素(按钮,输入框,标题等),这样在Selenium测试页面中可以通过调取页面类来获取页面元素,这样避免当页面元素id或者位置变化后,需要改测试代码。当元素ID变化时,只需要改测试页面Class中的页面属性即可。将页面定位与和业务分开,分离测试对象(元素对象)和测试脚本(用例脚本),提高可维护性。Page Object模式是一种自动化测试设计模式,将页面定位和业务操作分开,分离测试对象(元素对象)原创 2020-09-15 13:50:44 · 764 阅读 · 0 评论 -
selenium---JS处理滚动条
在web自动化中,会遇到想要定位的内容,由于电脑分辨率的问题导致,需要定位的元素可能没有在页面上展示出来,这个时候我们应该怎么做呢?正常情况下,肯定是点击滚动条,找到想要的元素,然后进行操作。问题来了,selenium有没有办法操作滚动呢?selenium目前没有好的办法进行操作滑动条,但是前面介绍的JS有这个功能哈滚动条滚动条:滚动条是在我们使用软件无法显示整个界面的时候,右侧的一个可以滚动的用于显示剩下界面的条知道了滚动条是什么,那么我们如何通过JS进行操作呢?JS操作滚动条JS操作滚动条有几原创 2020-09-14 13:36:00 · 256 阅读 · 0 评论 -
Selenium-浏览器与驱动对照
在学selenium自动化测试时,遇到的第一个大问题便是浏览器版本、浏览器驱动版本与selenium的版本不对应,而无法驱动浏览器进行自动化操作。收集了网上的一些技术文档,决定也整理一份相对较全面的对照表,一方面可以给自己查阅并且保持更新,也方便新学习的伙伴们查阅。1、谷歌浏览器Google Chrome对应的驱动为chromedirver2、火狐浏览器Mozilla Firefox对应的驱动为geckodriver3、配置环境变量第一种方法:可以在D盘新建个文件夹保存各个浏览器对应的驱原创 2020-09-10 13:43:39 · 1870 阅读 · 0 评论 -
selenium---通过JS语法操作页面元素
做过web测试的小伙伴们都知道,web元素现在很多是JS写的,那么既然是JS写的,可以通过JS语言去操作页面,来帮助我们操作一些selenium不能覆盖的功能。问题来了我们能否通过JS来定位元素呢?问题又来了selenium中如何调用JS语法呢?调用JS语法调用JS语法需要用到selenium中的方法 execute_script() ,参数直接填写JS语法。源码:def execute_script(self, script, *args): """ Synchro原创 2020-09-10 13:33:14 · 680 阅读 · 1 评论 -
Xpath定位和CssSelector定位的区别
1、Xpath基本语法:(1)"/":从根节点选取,下级节点(2)"//":任意节点选取(3)"*":任意标签选取(4)"@":选取属性(5)"…":选取当前节点的父节点(6)“text()”:匹配节点全部链接文字(7)“contains(a,b)”:匹配节点部分链接文字(8)"last()"选取最后一个2、Xpath与Css Selector的区别:定位方式XpathCss Selectorfind_element_by_id(“id值”)//*[@id=“id原创 2020-09-09 13:27:04 · 1041 阅读 · 0 评论 -
selenium---加载Chrome浏览器配置
通过selenium启动浏览器是,会发现是启动的一个新的浏览器,我们的一些登录信息,浏览器配置都会清楚,通过执行比较不方便,那么这一篇就简单介绍下如何配置Chrome浏览器的配置。配置浏览器信息在配置之前,首先查看下浏览器的信息,这样方便下一步进行配置,最主要的是找到个人配置文件路径,然后在启动浏览器的时候添加进去。查看方法:浏览器中直接输入 chrome://version/个人路径已经获取到了可以通过webdriver中 ChromeOptions() 进行添加配置,具体代码如下:由于需要加原创 2020-09-09 13:16:34 · 533 阅读 · 0 评论 -
selenium---快速确认元素定位正确
UI自动化中,最最最最重要的还是定位元素,哪么如何确认我们定位的元素一定正确呢?以前的火狐有Firebug帮助我们定位,后面好像没有维护了。目前Chrome浏览器用的比较多,如何在Chrome快速判断元素定位是否正常?肯定有人回答,运行脚本执行,那是不是太麻烦了?今天安静不介绍新的知识点了,介绍下如何通过Chrome帮助我们快速定位到元素是否正确方法一:方法一在前面已经提到过一次了,就是通过打开浏览器的F12,然后在ctrl+F(Windows下)活mac电脑上Command+F,输入需要查看的元素信息原创 2020-09-08 19:48:50 · 1070 阅读 · 0 评论 -
selenium三大切换的骚操作之显性等待
一、handle窗口切换当点击某个元素后,会重新生成一个新的页签,但此时我们的操作仍然在原先的窗口当中,如果要在新的窗口继续操作元素,那么就要用到handle窗口切换的方法。常用方法:window_handles:获取当前打开的所有窗口句柄,返回类型为一个列表。current_window_handle:获取当前窗口的句柄。switch_to.window(handle_path):切换窗口,handle_path参数代表的是一个窗口句柄。当操作某个元素后需要等待新的元素出现,我们用到了显性等待原创 2020-09-07 13:59:38 · 808 阅读 · 1 评论 -
Django---Pycharm连接数据库
环境准备1、电脑上安装pycharm。2、已知的mysql登录地址。3、有手就行的操作。pycharm连接数据库1、打开pycharm,点击右侧Database2、点击加号,然后选择Data source再次选择数据库MYsql3、点击下方Download,下载mysql插件4、安装完成后,需要输入mysql的主机地址端口号以及账号密码5、连接数据库后,可以在右侧看到数据库了。what?这是什么?我的数据库?不要慌,这个数据库只是没有显示出来而已。6、打开浏览器设置,选择Sc原创 2020-09-02 13:46:44 · 493 阅读 · 0 评论 -
selenium---xpath轴定位
轴定位轴定位其实就是通过html中的一些节点的节点集进行定位的,通常需要用到这些轴名称结果ancestor选取当前节点的所有先辈(父、祖父等)。ancestor-or-self选取当前节点的所有先辈(父、祖父等)以及当前节点本身。attribute选取当前节点的所有属性。child选取当前节点的所有子元素。descendant选取当前节点的所有后代元素(子、孙等)。descendant-or-self选取当前节点的所有后代元素(子、孙等)以及原创 2020-09-02 13:35:42 · 816 阅读 · 0 评论