ie11之F12 开发者调试工具
https://www.cnblogs.com/Ribbon/p/4549767.html
自动化webdriver测试工具入门简介
http://www.51testing.com/zhuanti/webdriver.htm
http://www.51testing.com/zhuanti/selenium.html
Selenium WebDriver高级用法
掌握selenium初级用法后,来继续深入学习。
<code>WebElement select = driver.findElement(By.xpath("//select"));
List<WebElement> allOptions = select.findElements(By.tagName("option"));
for(WebElement option : allOptions)
{
System.out.println(String.format("Value is " %s, option.getAttribute("value")));
option.click();
}</code>
|
<code>//打开域名
driver.get("http:/
/www.yeetrack.com");
//添加Cookie
Cookie cookie = new Cookie("uuid", "abcdedfjeiajfei");
driver.manage().addCookie(cookie);
//遍历当前域名的cookie
Set(Cookie) allCookies = driver.manage().getCookies();
for(Cookie loadedCookie : allCookies)
{
System.out.println(String.format("%s ---> %s", loadedCookie.getName(), loadedCookie.getValue()));
}</code>
|
IDEA+Java:Selenium+Maven+TestNG基本WebUI自动化测试环境搭建
IntelliJ IDEA 15 创建maven项目
https://www.cnblogs.com/wql025/p/5215570.html
webdriver常用断言
webdriver的断言使用
操作(action)、辅助(accessors)和断言(assertion):
操作action:
如点击链接,选择选项的方式进行工作。如果一个动作执行失败,或是有错误,当前的测试将会停止执行。
操作中常见命令有:open(打开页面)
clickAndWait(点击并等待)
select(选择下拉菜单)
pause(等待指定时间,以毫秒为单位,即要睡眠的时间)
setTimeout(指定等待动作完成的等待时间。默认为30秒。
goBack(模拟用户点击其浏览器上的“back”按钮)
click与clickAndWait的区别:
Comand Target
clickAndWait css=input[type=submiit] //句二
$this->click(“css=input[type=submit]“); //此句对应上面的 句一
$this->waitForPageToLoad(“30000″);
Andwait这个后缀,告诉我们,该命令将使浏览器向服务器产生一个请求,使Selenium等待加载一个新的页面。
辅助accessors:
如:storeElementPresent(locator,variableName)
即将locator定位到的状态存储到variableName变量中。
可同断言一同使用。
断言assertion:
常见的断言包括:验证页面内容,如标题是否为X或当前位置是否正确,或是验证该复选框是否被勾选。
断言被用于三种模式: assert 、verify、waitfor
Verify 失败时,该测试将继续执行,并将错误记入日显示屏 。也就是说允许此单个 验证通过。确保应用程序在正确的页面上。
如果该条件为真,他们将立即成功执行。如果该条件不为真,则将失败并暂停测试。直到超过当前所设定的超时时间。 一般跟setTimeout时间一起用
断言常用的有:
assertTitle(检查当前页面的title是否正确)、
assertSelected(检查select的下拉菜单中选中是否正确)、
assertText(检查指定元素的文本)、
assertTextNotPresent(检查在当前给用户显示的页面上是否没有出现指定的文本)、
assertTable(检查table里的某个cell中的值)、
assertNotEditable(检查指定的input是否不可以编辑)、
waitForElementPresent (等待检验某元素的存在。为真时,则执行。)
idea快捷键
http://gitlab.thunisoft.com/rdcdev1/FY_PRD_dianzijuanzong/wikis/idea快捷键
Alt+回车
导入包,自动修正
Ctrl+N
查找类
Ctrl+Shift+N
查找文件
Ctrl+Alt+L
格式化代码
Ctrl+Alt+O
优化导入的类和包
Alt+Insert
Ctrl+E或者Alt+Shift+C
最近更改的代码
Ctrl+R
替换文本
Ctrl+F
查找文本
Ctrl+Shift+Space
自动补全代码
Ctrl+空格
代码提示
Ctrl+Alt+Space
类名或接口名提示
Ctrl+P
方法参数提示
Ctrl+Shift+Alt+N
查找类中的方法或变量
Alt+Shift+C
对比最近修改的代码
Shift+F6
重构-重命名
Ctrl+Shift+先上键
Ctrl+X
删除行
Ctrl+D
复制行
Ctrl+/或Ctrl+Shift+/
注释(//或者/.../)
Ctrl+J
自动代码
Ctrl+E
最近打开的文件
Ctrl+H
显示类结构图
Ctrl+Q
显示注释文档
Alt+F1
查找代码所在位置
Alt+1
快速打开或隐藏工程面板
Ctrl+Alt+left/right
返回至上次浏览的位置
Alt+left/right
切换代码视图
Alt+Up/Down
在方法间快速移动定位
Ctrl+Shift+Up/Down
代码向上/下移动。
F2或Shift+F2
高亮错误或警告快速定位
代码标签输入完成后,按Tab,生成代码。
Ctrl+Shift+F7
高亮显示所有该文本,按Esc高亮消失。
Ctrl+W
选中代码,连续按会有其他效果
选中文本,按Alt+F3
逐个往下查找相同文本,并高亮显示。
Ctrl+Up/Down
光标跳转到第一行或最后一行下
Ctrl+B
快速打开光标处的类或方法
Selenium+Webdriver完整解决方案
一、等待处理
public void waitForElement(By by) throws Exception{
for(int second = 1; second <= 30; second++){
try{
driver.findElement(by);
break;
}catch(Exception e){
System.out.println(e.getLocalizedMessage());
}
Thread.sleep(1000);
}
}
this.waitForElement(By.id("username"));//调用方法
|
public boolean waitForElement(By by) throws Exception{
boolean isExsit = false;
for(int second = 1; second <= 30; second++){
try{
driver.findElement(by);
isExist = true;
break;
}catch(Exception e){
System.out.println(e.getLocalizedMessage());
}
Thread.sleep(1000);
}
return isExist;
}
if(this.waitForElement(By.id("username"))){
}else{
}
|
//windowID切换
String loginID = driver.getWindowHandle();
for(String windowID : driver.getWindowHandles()){
if (!windowID.equals(loginID))
driver.switchTo.().window(windowID);
}
//windowTitle切换
for(String windowID : driver.getWindowHandles()){
driver.switchTo.().window(windowID);
Sring windowTitle = driver.getTitle();
if(windowTitle.contains("部分标题")){
break;
}
}
|
private Actions action;
//单击-click
public void click(){
action.moveToElement(drvier.findElement(By.linkText("login"))).perform();
action.click().perform(); //action的调用后面一定要加上perform,才能保证能真正的运行。
}
//双击-
public void doubleClick(){
action.doubleClick(drvier.findElement(By.linkText("login"))).perform();
}
//右键-
public void rightClick(){
action.contextClick(drvier.findElement(By.linkText("login"))).perform();
}
//悬停-
public void mouseHold(){
action.clickAndHold(drvier.findElement(By.linkText("login"))).perform();
}
//拖拽-
public void dragDrop(){
WebElement source = drvier.findElement(By.linkText("login"))
WebElement target = drvier.findElement(By.linkText("login"))
action.dragAndDrop(source, target);
action.dragAndDropBy(source, 200, 300);
}
|
一个很好的博客
Selenium Webdriver元素定位的八种常用方式
http://www.cnblogs.com/qingchunjun/p/4208159.html
Selenium2+python自动化38-显式等待(WebDriverWait)
http://blog.csdn.net/u011541946/article/details/69694510