8种定位方式
- ID
- name name字段
- className 类名字
- cssSelector css选择器
- tagName 类似div,span, input这种叫标签名
- linkText a标签,标签的名字
- partialLinkText 模糊标签名字
- xpath
获取cookie
driver.manage().getCookies();
添加cookie
for (Cookie cookie1 : driver.manage().getCookies()) {
driver.manage().addCookie(cookie1);
}
1、前端代码,自己随便写。
aaa.html
<body>
<script>
alert("123")
</script>
<a href="https://blog.csdn.net/hnd978142833/article/details/54584456" target="_blank" class="button">点我</a>
<iframe src="./b.html" frameborder="1" width="300" height="200" id="aaa">
</iframe>
</body>
b.html
<form action="http://www.baidu.com" method="get">
<input type="submit" id="a">
<div>
<span>
asddasasdda
</span>
</div>
<div>
<span>
asddasasdda
</span>
</div>
<div>
<span>
asddasasdda
</span>
</div>
<div>
<span>
asddasasdda
</span>
</div>
<div>
<span>
asddasasdda
</span>
</div>
<div>
<span>
asddasasdda
</span>
</div>
姓名:<input type="text"><br>
密码:<input type="text"><br>
<input type="submit">
<hr>
<hr>
<hr>
<p>国家
<select name="列表名称">
<option value="china" id="a">中国</option>
<option value="usa" id="b">美国</option>
<option value="rs" id="c">瑞士</option>
<option value="yd" id="d">印度</option>
</select>
</p>
</form>
</body>
2、下面是基础操作,driver初始化,打开网站
- 首先要选择你要测试的浏览器,然后下载对应浏览器驱动。驱动下载自行百度。
//这里驱动路径存储在了配置文件中下面可以看到配置文件内容,测试框架用的是testng.
//关于testng的用法,可以自行百度。或者私信我
- private static ResourceBundle bundle = ResourceBundle.getBundle("application");;
private static WebDriver driver;
@Test
public void demo() {
//设置驱动路径
System.setProperty(bundle.getString("driverKey"), bundle.getString("driverValue"));
driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get(bundle.getString("url"));
//配置文件内容
driverKey=webdriver.chrome.driver
driverValue=C:/Program Files (x86)/Google/Chrome/Application/3.exe
url=D:/Selenium/src/main/java/com/aaa.html
3、弹窗操作
//就这么简单,没想到吧
driver.switchTo().alert().accept();
//切换回原主页面
driver.switchTo().defaultContent();
4、iframe操作
iframe是内嵌网页,先切换到内嵌网页,可以根据ID属性的值
driver.switchTo().frame("aaa");
5、窗口切换操作(重点来了,看了很多博客,少一步细节处理的话,会切换失败)
//这一步,返回所有窗口的句柄
Set<String> handles=driver.getWindowHandles();
for(String handle:handles){
//遍历的时候怎么保证,切换到自己想要的窗口。思路是根据窗口的title
//想获取当前窗口title,那么一定要先获取当前窗口的操作句柄
if(driver.switchTo().window(handle).getTitle().equals("frame,iframe,frameset之间的关系与区别_hnd978142833的博客-CSDN博客_frameset")){
driver.findElement(By.partialLinkText("的主页")).click();
}
}
6、下拉框操作
Select select=new Select(driver.findElement(By.xpath("/html/body/form/p/select")));
//select.selectByValue("china");
select.selectByVisibleText("印度");
7、导航栏操作
WebDriver.Navigation navigation=driver.navigate();
navigation.back();
navigation.forward();
navigation.refresh();
navigate.to(url) 跳转到指定url,和 webdriver 使用 get 方法是一样的。
navigate.refresh() 刷新当前页面。
navigate.back() 浏览器回退操作。
navigate.forward() 浏览器前进操作。
8、等待
- 硬性等待
:Thread.sleep(1000);
- 隐式等待的理解,就是我们通过代码设置一个等待时间,如果在这个等待时间内,网页加载完成后就执行下一步,否则一直等待到时间截止。
- 显示等待
:WebDriverWait wait=new WebDriverWait(driver,5);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("/html/body/form/p/select")));
9、鼠标操作
Actions action = new Actions(driver);
//a左击
action.click
// 鼠标右键点击指定的元素
action.contextClick(driver.findElement(By.id("element"))).perform();
// 鼠标双击指定的元素
action.doubleClick(driver.findElement(By.id("element"))).perform();
// 鼠标移到到指定元素上
action.moveToElement(driver.findElement(By.id("element"))).perform();
// 鼠标拖拽动作, 将 source 元素拖放到 target 元素的位置。
WebElement source = driver.findElement(By.name("element"));
WebElement target = driver.findElement(By.name("element"));
action.dragAndDrop(source,target).perform();
// 释放鼠标
action.release().perform();
10、键盘输入
WebDriver driver = new ChromeDriver();
driver.get("https://www.baidu.com");
// 定位到对应的元素
WebElement input = driver.findElement(By.id("kw"));
//输入框输入内容
input.sendKeys("seleniumm");
Thread.sleep(2000);
//删除多输入的一个 m
input.sendKeys(Keys.BACK_SPACE);
Thread.sleep(2000);
11、执行js
JavascriptExecutor js= (JavascriptExecutor) driver;
js.executeScript("window.scrollTo(0,1500);");
12、操作滚动条和执行js代码
JavascriptExecutor js= (JavascriptExecutor) driver;
js.executeScript("window.scrollTo(1500,1500);");