selenium2 原理和常用api

来源:互联网 发布:企业邮箱域名是什么 编辑:程序博客网 时间:2024/06/10 20:47

1. webdriver 原理

http://www.cnblogs.com/timsheng/archive/2012/06/12/2546957.html

2. selenium2接口功能

功能代码查找元素1. BY
例如:<input type="text" name="passwd" id="passwd-id" />
driver.findElement(By.id("passwd-id"));
driver.findElement(By.name("passwd"));
driver.findElement(By.xpath("//input[@id='passwd-id']"))

2. JS



通过”Keys”这个类,来模拟键盘输入element.sendKeys(" and some", Keys.ARROW_DOWN);打开,前进,后退navigate().to()”和”get()”方法,实现的功能完全一样

以下2个方法:完全依赖于底层的浏览器。
如果两种浏览器的行为不一致,那么代码执行的效果也会不一致

driver.navigate().forward();
driver.navigate().back();cookiesSet<Cookie> allCookies = driver.manage().getCookies();

注: localstorage 只能使用js完成
                                  

3.  selenium 1与selenium2接口对比

参考:http://www.51testing.com/html/85/258885-847648.html


方法Selenium1.0Selenium2.0打开页面Selenium.open(String url);Driver.get(String url);点击元素Selenium.click(String arg0);driver.findElement(By).click();输入框

selenium.type(String arg0, String arg1);

arg0为元素定位,arg1为输入的值,

再次type时会清空了输入

WebElement element = driver.findElement(By);

element.sendkeys(arg0);

需要使用element.clear();来清空内容。

下拉选择框

Selenium.select(String arg0, String arg1);

arg0为元素定位,arg1为选择的值

找到下拉框元素:

Select select=new Select(driver.findElement(By));  

选择对应的选择项:

select.selectByVisibleText(String text);

//通过文本选择

select.selectByValue(String value);

//通过value选择

select.selectByIndex(int index)

//通过序号选择

单选多选框

选择:

selenium.check(String locator);

不选:

selenium.check(String locator);

判断是否选择:

Boolean isChecked(String locator);

定位元素:

WebElement element =driver.findElement(By);

点击:Element.click();

清除:Element.clear();

判断是否选择:

Boolean isSelected();

判断是否可选择:Boolean isEnabled();

获取文本内容selenium.getText(String locator);

WebElement element =driver.findElement(By);

element.getText();

弹出框

Selenium.chooseOkOnNextConfirmation();

Selenium.chooseCancelOnNextConfirmation();

Selenium.getConfirmation();

该方法我使用后没有成功,所以一直很纠结

Alert alert = driver.switchTo().alert();

alert.accept();

//点击OK

alert.dismiss();

//点击cancel

alert.getText();

//获取弹出框文本

2.0很好的处理了弹出框问题。

frame1.0中对frame没有特殊处理跟其他元素一样

2.0中需要在framedefaultContent切换后才能定位,

否则会出现找不到元素的问题

driver.switchTo().defaultContent();

//切换到默认页面内容

driver.switchTo().frame(WebElement frameElement);

//切换到对应的frame

页面等待

selenium.waitForPageToLoad(String arg0);

直接有方法实现页面加载

driver.manage().timeouts().pageLoadTimeout(30, 

TimeUnit.SECONDS);

//页面加载等待时间

driver.manage().timeouts().implicitlyWait(30,

TimeUnit.SECONDS); 

//定位元素等待时间

driver.manage().timeouts().setScriptTimeout(30, 

TimeUnit.SECONDS);

//异步加载等待时间

但是只是在firefox上才能起作用,其他浏览器需要

自己实现对应的方法。

隐藏元素在1.0中直接可以操作,即使该元素的styledisplay:none如果不显示的元素是无法定位的,那就需要触发mouseover
之后才能定位。

1 0
原创粉丝点击