摘要:浏览器操作
- 导航
- 窗口和tabs
- Frames and IFrames
- window管理
- 设置窗口
一、导航
1)页面导航到
driver.get("https://www.baidu.com")
driver.navigate.to("https://www.baidu.com")
区别:get是有逻辑的跳转,而navigate.to是直接跳转到该页面,没有任何逻辑
参考:https://blog.youkuaiyun.com/gaokao2011/article/details/17169969
2)获取当前页面URL
String url = driver.getCurrentUrl(); //返回的是字符串
System.out.println(url); //https://www.baidu.com
3)返回上一页面
driver.navigate.back();
4)前进下一页面
driver.navigate.forward();
5)刷新当前页面
driver.navigate.refresh();
6)获取当前页面的title
String title = driver.getTitle(); //返回字符串
System.out.println(title); //百度一下,你就知道
二、窗口和Tabs
当driver打开一个新窗口时,若想操作新窗口上的元素,则需要将driver切换到新窗口
1)获取当前窗口句柄
String currentWindowHandle = driver.getWindowHandle(); //返回字符串
2)获取所有窗口句柄
Set<String> allWindowHandles = driver.getWindowHandles(); //返回字符串集合
3)切换到新窗口
driver.switchTo().window(newHandle); //newHandle为要切换的新窗口的句柄
例子:
1、打开百度页面
2、输入【selenium】进行搜索
3、点击【百度百科】
4、切换到新打开的页面,鼠标悬停【分类】,点击下面的【艺术】
5、切换到新打开的页面,点击【穿越800年】链接
import java.util.Set;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;
public class Demo5 {
public static void main(String[] args) throws InterruptedException {
// TODO Auto-generated method stub
WebDriver driver = new ChromeDriver();
//1、打开浏览器,进入百度页面
driver.get("https://www.baidu.com/");
//2、输入框中输入selenium
driver.findElement(By.id("kw")).sendKeys("selenium");
//3、点击百度一下
driver.findElement(By.id("su")).click();
//4、点击百度百科
Thread.sleep(5000);
driver.findElement(By.xpath("//a[contains(text(),'百度百科')]")).click();
Thread.sleep(3000);
//5、获取新窗口的句柄并切换到新窗口
// 1) 先保存一下第一个窗口的句柄
String firstpage = driver.getWindowHandle();
// 2) 获取所有窗口的句柄
Set<String> handles = driver.getWindowHandles();
// 3) 循环handles,找到新窗口的句柄
String newHandle = "";
for(String handle : handles){
if(handle!=firstpage){
newHandle = handle;
}
}
// 4) 切换到新窗口
driver.switchTo().window(newHandle);
Thread.sleep(2000);
//6、鼠标悬停到【分类】上
// 1) Actions类
Actions action = new Actions(driver);
// 2) 将鼠标移到【分类】上
action.moveToElement(driver.findElement(By.linkText("分类"))).perform();
Thread.sleep(5000);
//7、点击【科学】
driver.findElement(By.linkText("科学")).click();
//8、鼠标悬停到【分类】上
action.moveToElement(driver.findElement(By.linkText("分类"))).perform();
Thread.sleep(5000);
//9、点击【艺术】
driver.findElement(By.linkText("艺术")).click();
//10、将句柄切换到新打开的窗口
Set<String> allhandles = driver.getWindowHandles();
for(String handle : allhandles){
driver.switchTo().window(handle);
if(driver.getTitle().contains("艺术百科_百度百科")){
break;
}
}
//11、点击【穿越800年】
driver.findElement(By.partialLinkText("穿越800年")).click();
}
}
4)关闭窗口或tabs
driver.close();
5)会话结束时退出浏览器
driver.quit();
三、Frames and IFrames
当页面上有iframe和frame元素时,若想操作iframe和frame下的html元素,则需要切换driver
1)切换到指定iframe或frame
WebElement element_iframe = driver.findElement(By.id("iframe1"));
driver.switchTo().frame(element_iframe);
2)切换回父页面
driver.switchTo().defaultContent();
四、window管理
1) 获取窗口大小
int width = driver.manage().window().getSize().getWidth();
int height = driver.manage().window().getSize().getHeight();
Dimension size = driver.manage().window().getSize();
int width = size.getWidth();
int height = size.getHeight();
2) 设置窗口大小
driver.manage().window().setSize(new Dimension(1024,768));
3) 获取窗口位置
int x = driver.manage().window().getPosition().getX();
int y = driver.manage().window().getPosition().getY();
Point position = driver.manage().window().getPosition();
int x = position.getX();
int y = position.getY();
五、设置窗口
1)设置窗口位置
driver.manage().window().setPositon(new Point(0,0));
2)最大化窗口
driver.manage().window().maximize();
3)全屏窗口
driver.manage().window().fullscreen();
本文详细介绍了使用Java+Selenium进行浏览器操作的方法,包括页面导航、窗口和Tab管理、Frames和IFrames切换、窗口大小位置设置等。重点讲解了如何在不同场景下进行页面跳转、窗口切换、iframe操作以及窗口属性调整。
2124

被折叠的 条评论
为什么被折叠?



