Java+selenium 02

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. 复合元素定位

大牛测试开发java selenium篇-复合元素定位

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("文件地址")的方法

或者用第三方工具,教程链接如下:

附件上传-借助AutoIt

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值