Selenium的一些常用操作
如果在原页面点击打开了新的页面,如何对新页面进行操作呢?
答:使用switchTo.window
使用方法:以下代码只是获取到了当前窗口的句柄,切换到了当前窗口,这样并不能解决问题String currentWindow = driver.getWindowHandle();
driver.switchTo.window(currentWindow);
进一步思考:需要使用getWindowHandles获取所有窗口的句柄;注意:每次打开同一窗口,Window句柄值都不同,getWindowHandle是获取当前窗口的句柄
下面代码即可实现driver切换到新打开的窗口,从而对新窗口的元素等进行操作。
for(String winHandle:driver.getWindowHandles){
driver.switchTo.window(winHandle);
}
在定位页面元素时,使用的方法明明没有错,却怎么也定位不到元素怎么办?
答:可能页面中嵌套了frame或iframe元素,此时要先切换到该frame/iframe,使用switchTo.frame然后再对元素进行操作,该函数常用操作如下图driver.switchTo.frame(0);//使用frame坐标来切换
driver.switchTo.frame(“iframe”);//使用frame的id或者name
driver.switchTo.frame(driver.findElement(By.id(“iframe”)) );
//切换到名为iframe的元素所在的frame
//注意:最好使用第2,3种方法进行切换
driver.switchTo().defaultContent();//可切换回原来的框架,进行其它操作
- 操作过程中,该如何处理浏览器弹窗呢?
答:使用Alert alert = driver.switchTo().alert(),对于获取到的alert对象的常用操作如下图所示:Alert alert = driver.switchTo().alert(); alert.accept();
注意:只有在页面出现弹窗才可以使用该方法;只有alert类型的弹窗才适用;在alert弹窗消除之前,无法对其他元素进行操作
4.selenium如何模拟鼠标对元素的拖拽操作?
答:使用dragAndDrop,具体使用案例如下:
webElement source = driver.findElement(By.name("source"));
webElement target = driver.findElement(By.name("target"));
Actions act = new Actions(driver);
act.dragAndDrop(source,target).perform;
常用系统事件操作,如下图所示:
使用案例如下:Actions builder = new Actions(driver);
Actions act = builder.clickAndHold(SomeElement).moveToElement(otherElement).release(otherElement).build();
act.perform;
使用注意事项:Action对象的动作链应该尽量短,使用时最好在执行一个简短的动作后验证页面是否处于正确的状态,然后再执行后面的动作
还没有评论,来说两句吧...