Java+Selenium Web UI自动化测试的一些小总结

- Chrome

关于Chrome的配置网上信息很多,直说一点,当选择在linux环境跑用例的时候,我们会优先选择headless run,默认情况下headless run的浏览器大小好像只有900*768,我们在windows下调通的用例在缩小的串口下经常会失败,最好调一下size:

chromeOptions.setHeadless(true);
chromeOptions.addArguments("--no-sandbox");
chromeOptions.addArguments("window-size=1280,900");

- Firefox,

a. Chrome下能够跑过的用例在firefox下可能会fail,原因之一是Firefox对所有超出视窗的元素都是不可操作的,即使使用Action或者JS来操作也不可行,需要添加相应的ScrollIntoView (下面click会介绍具体用法)

b. Firefox对隐藏元素默认是不可操作的(例如上传文件标签),firefox 59之后添加了FirefoxCapability moz:wedriverClick用于操作隐藏元素: firefoxOptions.setCapability("moz:webdriverClick",false); //点击隐藏元素,如上传文件

2. 关于Click

- Element.click

driver.findElement(By.css).click(); //前提条件为element可见(visible)且高度长度大于0,如果元素点击时发生变化则会抛出(StaleElementReferenceError

- Action.click

Actions action = new Actions(driver);
action.moveToElement(element).click().perform();//模拟鼠标操作,点击元素中间位置

- Javascript scrollIntoView and click

JavascriptExecutorje=(JavascriptExecutor)getWebDriver();

je.executeScript("arguments[0].scrollIntoView(false);",element);//移动到元素element对象的“底端”与当前窗口的“底部”对齐,//true为顶端

je.executeScript("arguments[0].click();",element);//通过JS点击元素,可绕开元素被图层覆盖或透明没有正面大小问题

  

3. Driver

- Chromedriver:

○ Headless mode: (Chrome headless模式时不使用Xvfb,Xvfb为早期没有chrome headless模式时的替代X window服务, headless默认窗口大小为900x768,可自行设置)

chromeOptions.setHeadless(true);

chromeOptions.addArguments("--no-sandbox");

chromeOptions.addArguments("window-size=1280,900");

○ Linux/Mac环境下运行chromedriver需要强制设置其为可执行文件

Filefile=newFile("chromedriver path");

file.setExecutable(true);

- Geckodriver

ProfilesIniprofile=newProfilesIni();

FirefoxProfileffProfile=profile.getProfile("default");

capabilities.setCapability(FirefoxDriver.PROFILE,ffProfile); //关于证书认证等的设置

FirefoxOptionsfirefoxOptions=newFirefoxOptions(capabilities);

firefoxOptions.setCapability("moz:webdriverClick",false);//允许点击隐藏元素,如上传文件

webdriver=newFirefoxDriver(firefoxOptions);

4. Hover

- Hover and click

Actionsaction=newActions(getWebDriver());

action.moveToElement(element).perform();

Element.click();//如果出现点击不了的问题,可尝试更改moveToElement到父节点,点击子element

  

- Hover and hold

Actionsaction=newActions(getWebDriver());

action.moveToElement(element).clickAndHold().perform();//侧面解决hover元素后在做其他操作hover元素隐藏问题

action.release();

  

后续慢慢添加

原文地址:https://www.cnblogs.com/testerLydia/p/9463927.html

时间: 2024-11-08 22:36:45

Java+Selenium Web UI自动化测试的一些小总结的相关文章

自动化测试之Python + selenium = Web UI自动化测试

1.1Python的运行环境 在我决定学习一门新语言Python的时候,Python3已经出来了,目前是Python2与Python3同步维护,Python2拥有大量的类库,但是随着时间的发展,Python3才是以后发展的主流,所以在这里我选择的版本是Python3.安装Python:Python官方网站:https://www.Python.org/ 进入之后选择对应的版本进行下载,Python的下载很简单,下一步的傻瓜式操作就可以了,只是有一点需要注意的是在进到这个界面时(下图)需要勾选上A

Python+Selenium搭建UI自动化测试框架

Python语言是非常强大的编程语言,很多时候也拿来当脚本语言用. Selenium是web应用测试工具,支持Java.Python等多种语言脚本,支持Chrome.Firefox等多种主流浏览器.主要实现的就是模拟人使用web应用,自动的打开浏览器.打开应用.进入应用进行各种模拟业务操作等等. 接下来,一步一步带领大家实现下Python+Selenium实现使用脚本自动发微博的功能. 1.Python安装 一般Linux系统自带了Python,Windows系统可以参考本人之前文章 [Pyth

简单Web UI 自动化测试框架 pyse

WebUI automation testing framework based on Selenium and unittest. 基于 selenium 和 unittest 的 Web UI自动化测试框架. 特点 默认使用CSS定位,同时支持多种定位方法(id\name\class\link_text\xpath\css). 基于Selenium二次封装,使用更简单. 提供脚手架,快速生成自动化测试项目. 自动生成/reports/目录,以及HTML测试报告生成. 自带断言方法,断言tit

java+Selenium+TestNg搭建自动化测试架构(1)实现代码和数据的分离

1.主要介绍介绍Java+Selenium+POM的自动化测试框架的搭建,第一个首先实现代码和账号URL等信息的分离.第二点支持跨浏览器,通过读取配置文件的方式实现. 1)将账号URL等信息添加在properties文件中然后读取 2)编写浏览器类通过去取配置文件实现浏览器的切换 3)测试浏览器类 项目结构: 1.新建一个文件夹将properties文件放在文件夹中内容如下: # browser switcher #browserName = FirefoxbrowserName = Chrom

一个简单的Web UI自动化测试框架Java实现

简介 原创文章,转载请注明出处 这个框架的名字叫OAT,全称Object-Oriented  Automation Test.这个框架的思想借助于Tellurium框架.他的主要功能是将页面信息及行为存储在Java 对象中,然后在脚本中引用页面的行为.自动化程序最终由许多的页面行为组成.这个框架默认使用Selenium1驱动,并且可以通过编程使用其他驱动,因 为OAT是面向接口的. 以下以google home page的demo为例,介绍这个基于Annoation和反射的框架基本运行原理. p

Python+Selenium进行UI自动化测试项目中,常用的小技巧2:读取配置文件(configparser,.ini文件)

在自动化测试项目中,可能会碰到一些经常使用的但 很少变化的配置信息,下面就来介绍使用configparser来读取配置信息config.ini 读取的信息(config.ini)如下: [config]platformName=AndroidappPackage=com.sheinsideappActivity=.module.GuideActivitybaseUrl=http://0.0.0.0:4723/wd/hubfindElementTimes=10[cmd]openAppium=nod

Python+Selenium进行UI自动化测试项目中,常用的小技巧4:日志打印,longging模块(控制台和文件同时输出)

在前段时间,为了给项目中加入日志功能,就想到了 logging 模块,百度logging一大推,都是各种复制的,并没有找到自己想要的结果:我的目的很简单,就是:在把日志写入文件的同时在控制台输出,更加方便调试,我下面的代码就满足这个功能: 1 #coding=utf-8 2 3 import logging 4 import time 5 import commonparameter 6 7 class Log: 8 def __init__(self): 9 self.logname = co

Python+Selenium进行UI自动化测试项目中,常用的小技巧3:写入excel表(python,xlsxwriter)

我们在项目中可能用到excel表生成,下面的代码就是对excel表的操作: 1 import xlsxwriter 2 import datetime 3 4 class write_excel(): 5 def __init__(self,path): 6 now = datetime.datetime.now() 7 fname = 'TestReport' + now.strftime("%Y-%m-%d") 8 self.row = 0 9 self.xl = xlsxwrit

Python+Selenium进行UI自动化测试项目中,常用的小技巧1:读取excel表,转化成字典(dict)输出

从今天开始我将会把在项目中遇到的问题,以及常用的一些技巧来分享出来,以此来促进自己的学习和提升自己:更加方便我以后的查阅. 现在要说的是:用Python来读取excel表的数据,返回字典(dict),在脚本中进行调用 我直接贴出代码: import xlrd data_path = "F:\data" # 存放excel表的路径xlsname = "userinfo.xlsx" # excel表的名字sheetname = "Sheet1" #