6、通过元素的html中的位置路径定位元素:driver. findElement(By.xpath( value));
例:driver.findElement(By.xpath(“/html/body/div/div[2]/div/div/div/from/span[2]/input”));---------绝对路径,2表示第二个div
例:driver. findElement(By.xpath(“//span[@class=’bg s_ipt_wr’]/input));---------------------------相对路径,如果不想指定标签名也可以用星号代替
例:driver. findElement(By.xpath(“//input[@maxlength=’100’]”))--------------------------------------相对路径,元素的任意属性都可以使用,只要它唯一标识。
例:driver.findElement(By.xpath(“//input[@id=’kw’and @class=’su’]/span/input”));---------------相对路径,可使用路基运算符。
7、通过元素的链接名称定位元素:driver. findElement(By.linkText( value));
8、通过元素的部分链接名称定位元素:driver. findElement(By.partialLinkText( value));
二、元素操作
(一)简单的元素操作
1、元素操作
clear( ):清除文本,如果是一个文件输入框;
sendKends(value):在元素上模拟按键输入;
click( ):单击元素;有时候可与click互换使用,submit( )同样可以提交一个按钮。
submit( ):用于提交表单,特别用于没提交按钮的情况,如:输入关键字后点“回车”。
2、获取元素信息
getSize( ):返回元素的尺寸
getAttribute( ):获得属性值
getTitle( ):获取当前页面的标题
getCurrentUrl( ):用户获取当前页面的URL
getText( ):用于获取元素的文本信息
3、判断元素信息
isDisplayed( ):用于返回一个元素是否可见,可见返回true
isEnable():用于存储input、select等元素的可编辑状态,可以编辑返回true,否则返回false
isSelected( ):判断某个元素是否被选中。
(二)鼠标事件
WebDriver中提供了关于鼠标操作的方法:
contextClick( ):右击
clickAndHold( ):鼠标悬停
moveToElement( ):鼠标悬停
doubleClick( ):双击
release( ):释放鼠标
perform( ):执行所有Actions中存储的行为
dragAndDrop(value1,value2):将values1元素拖放到values2元素的位置
例: Actions action = new Actions(driver);
action.moveToElement(element).perform();
(三)键盘事件
使用键盘按键方法前需要先导入keys类。以下为常用的键盘操作:
sendKeys(Keys.BACK_SPACE) 删除键(BackSpace)sendKeys(Keys.SPACE) 空格键(Space)
sendKeys(Keys.TAB)
制表键(Tab)
sendKeys(Keys.ESCAPE) 回退键(Esc)sendKeys(Keys.ENTER) 回车键(Enter)sendKeys(Keys.CONTROL,'a') 全选(Ctrl+A)
sendKeys(Keys.CONTROL,'c')
复制(Ctrl+C)sendKeys(Keys.CONTROL,'x') 剪切(Ctrl+X)sendKeys(Keys.CONTROL,'v') 粘贴(Ctrl+V)sendKeys(Keys.F1)
键盘F1
……
sendKeys(Keys.F12) 键盘F12
三、界面操作
(一)控制浏览器
1、控制浏览器的大小
driver.manage( ).window( ).setSize(new Dimension(480,800));
driver.manage().window().maximize();
2、控制浏览器前进、后退、刷新
driver.navigate( ).back( );
driver.navigate( ).forward( );
driver.navigate().refresh();
(二)界面切换
1、通过id、name、xpath实现多表单切换:driver.switchTo( ).frame( );
例: driver.switchTo( ).frame(“ if ”); ---------------------------------------------------------------id = “if”
driver.switchTo( ).frame(“ nf ”); -------------------------------------------------------------name= “nf”
WebElement xf=driver.findElement(By.xpath(“//iframe[@id=’if’]”));
driver.switchTo( ).frame(xf);-------------------------------------------------------------通过xpath定位到iframe
2、返回上一级表单: driver.swithTo().defaultContent();
3、多窗口切换:driver.switchTo().window(handle);---------handle为句柄,通过driver.getWindowHandle()或driver.getWindowHandles()获得
4、警告框处理:Alert alert = driver.switchTo().alert();
accept():点击确认按钮
dismiss():点击取消按钮,如果有的话。
sendKeys():输入值,这个alert/confirm没有对话框就不能用了,不然会报错。
四、其他
1、操作cookies
getCookies():获取所有的cookie信息
addCookie(cookie_dict): 添加cookie,必须有name和value值
deleteAllCookies(): 删除所有的cookie信息
deleteCookieNamed(String name): 删除name这个cookies
getCookiesNamed(String name): 返回特定name的cookie值
2、调用JavaScript
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("JS脚本");
例:调用Javascript,操作滑动条;
((JavascriptExecutor) driver).executeScript("window.scrollTo(0,document.body.scrollHeight)");
((JavascriptExecutor) driver).executeScript("window.scrollTo(0,1000)");
3、时间等待
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); //识别元素时的超时时间
driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS); //页面加载时的超时时间
driver.manage().timeouts().setScriptTimeout(10, TimeUnit.SECONDS); //异步脚本的超时时间