文章目录
1. sendKeys、click、getAttribute、clear、isDisplayed、isSelected、Thread.sleep()
2. maximize、getText、getWindowHandle、getCurrentUrl、quit、back、forward
// 窗口最大化
driver.manage().window().maximize();
// getText
// 在控制台输出
System.out.println(driver.findElement(By.linkText("免费注册")).getText());
// 获取窗口的句柄
System.out.println(driver.gerWindowHandle());
// 获取当前的Url
System.out.println(driver.getCurentUrl());
// close:关闭当前窗口
// quit:退出并关闭所有窗口
driver.quit();
// 向前向后
driver.navigate().back();
Thread.sleep();
driver.navigate().forward();
3. 切换句柄
WebDriver driver = new ChromeDriver();
driver.get("https://www.hao123.com/");
String hand1 = driver.getWindowHandle();
// 窗口最大化
driver.manage().window().maximize();
driver.findElement(By.linkText("hao123推荐")).click();
// 注意Set需要导入包 import java.util.Set
Set<String> h = driver.getWindowHandles();
String targetHandle = null;
for (String han:h) {
System.out.println(han);
if (driver.switchTo().window(han).getTitle().contains("目标网站标题")){
targetHandle = han;
break;
}
}
// 切换句柄后的操作写在for循环外
driver.switchTo.window(targetHandle);
driver.findElement(By.linkText("一键登录")).click();
4. 悬停
action.cliclkAndHold();
clickAndHold、moveToElement
WebDriver driver = new ChromeDriver();
driver.get("https://www.baidu.com/");
// Actions类
Actions action = new Actions(driver);
driver.manage().window().maximize();
// 打开悬停元素的方法1
action.clickAndHold(driver.findElement(By.xpath("//*[@id=\"s-usersetting-top\"]"))).perform();
driver.findElement(By.className("set")).click();
// 打开悬停元素的方法2
action.moveToElement(driver.findElement(By.xpath("//*[@id=\"s-usersetting-top\"]"))).perform();
driver.findElement(By.className("set")).click();
5. 下拉框
方法一:直接采用xpath
WebDriver driver = new ChromeDriver();
driver.get("https://www.baidu.com/");
// Actions类
Actions action = new Actions(driver);
driver.manage().window().maximize();
// 打开悬停元素
action.clickAndHold(driver.findElement(By.xpath("//*[@id=\"s-usersetting-top\"]"))).perform();
driver.findElement(By.xpath("//*[@id=\"s-user-setting-menu\"]/div/a[2]")).click();
// 方法一:直接选择下path 注意,需要将页面元素一步步点卡,不然会报错
// 选择下拉箭头
driver.findElement(By.xpath("//*[@id=\"adv-setting-ft\"]/div/div[1]/i[1]")).click();
// 选择pdf选项
driver.findElement(By.xpath("//*[@id=\"adv-setting-ft\"]/div/div[2]/div[2]/p[2]")).click();
方法二:Select类(适用于标签为<select>的元素)
// 方法二:Selector
// 但是百度网页做不了测试,可能是因为百度的下拉栏用的不是<select>标签
Select select = new Select(driver.findElement(By.xpath("xxx")));
select.selectByIndex(2);//索引下标从0开始
select.selectByValue("50");// value是标签的属性
select.selectByVisibleText("50000");// 根据显示在网页上的文本进行定位选择
// 循环所有选项
for (int i = 0; i < select.getOptions().size(); i++) {
select.selectByIndex(i);
Thread.sleep(1000);
}
6. 复合元素定位
用driver.findElements();方法可以进行复合元素定位,返回的是 List<WebElement>。
List<WebElement> labels = driver.findElements(By.className("c-radio-input"));
System.out.println(labels.size());
// 疑问:为什么延迟时间用Thread.sleep(1000);就不能正常执行
for (int i = 0; i < labels.size(); i++) {
Thread.sleep(5000);
labels.get(i).click();
}
7. frame切换
driver.switchTo().frame(“xxx”);
driver.switchTo().defaultContent();

8. 附件上传
如果标签是input类型,可以直接用sendKeys("文件地址")的方法
或者用第三方工具,教程链接如下:
1335

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



