0


selenium知识点

  • Selenium IDE,是Firefox的扩展插件,支持用户录制和回放测试。
  • Selenium WebDriver,提供了各种语言环境的API来支持更多控制权和编写符合标准软件开发实践的应用程序。
  • SeleniumGrid,分布式自动化工具,可以在多个测试环境中以并发的方式执行测试脚本,实现测试脚本的并发执行,缩短大量的测试脚本的执行时时间

一、WebDriver

1.1什么是webdriver

1.定义:是一种web应用程序的自动化工具
2.提供了友好的API(应用编程接口)

1.2 webdriver常见环境问题

https://www.cnblogs.com/yyoba/p/12048866.html

二、元素定位

1.定位百度的搜索框元素,并且输入数据(ID定位)-- 唯一的
chromeDriver,findElement(By.id("kw")).sendKeys("腾讯课堂”);
2.定位百度的搜索框元素,并且输入数据(Name定位)–重复
chromeDriver.findElement(By.name("wd")).sendKeys("腾讯课堂");
3.定位到百度的搜索报元素,并且输入数据(taqName)-- 找到的元素是会有多个–不推荐
chromeDriver.findElement(By.tagName("input")).sendKeys("腾讯课堂");
4.定位到百度的搜索框元素,并且输入数据(className定位)
chromeDriver.findElement(By.className("s_ipt")).sendKeys("腾讯课堂”);
  • Compound class names not permitted–>复合类名的问题 chromeDriver,findElementBy.className("bg s_btn")).click();//【错】留当前页面唯一的chromeDriver,findElement(By.className("s_btn")).click();
5.定位“新闻”元素,并且点击(LinkText定位)–> 超链接完整文本
chromeDriver.findElement(By.linkText("新闻")).click();
6.定位“新闻”元素,并且点击(partialLinkText定位)–> 部分文本
chromeDriver.findElement(By.partialLinkrext("新")).click();
7.cssSelector元素定位
① tagName定位//不推荐
chromeDriver.findElement(By.cssSelector("input"));
② id定位
chromeDriver.findElement(By.cssSelector("#kw")).sendKeys("腾讯课堂”);
③ classname定位
chromeDriver.findElement(By.cssSelector(".s_ipt")).sendKeys("腾讯课堂”);
chromeDriver.fin![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/88d15c1f0f8d465bbee764699d17863d.png)dElement(By.cssSelector(".bg.s_btn")).click();//【符合类名每一个都要加.】
④ 精确定位

在这里插入图片描述在这里插入图片描述

8.xpath元素定位

在这里插入图片描述

  • 选取属性

在这里插入图片描述

  • 前面是父元素后面是子元素在这里插入图片描述
  • 搜索文字

在这里插入图片描述

  • 部分文字在这里插入图片描述

三、元素操作API

1.click()
2.clear()
3.sendKeys(…)
4.按键操作

在这里插入图片描述

5.getTagName() 获取元素的标签名
6.getAttribute(属性名) 根据属性名获取元素的属性值
7.getText() 获取当前元素的文本值
8.isDisplayed() 查看元素是否显示
9.get(String url) 访问指定url
10.getCurrentUrl() 获取当前页面的url地址 【他的对象是driver】
11.getTitle() 获取当前页面标题 【他的对象是driver】
12.getPageSource() 获取当前页面源代码【他的对象是driver】
13.quit() 关闭驱动对象以及所有相关窗口 【他的对象是driver】
14.close() 关闭当前窗口—不会关闭驱动对象(默认关掉第一个,关闭别的要窗口切换)【他的对象是driver】
15.getWindowHandle() 返回当前页面句柄 【他的对象是driver】
16.getWindowHandles() 返回所有由驱动对象打开页面所有的句柄,页面不同,句柄不同 【他的对象是driver】【返回值是一个集合】【新窗口打开后的句柄和新窗口打开前的句柄一样,如果要获取新窗口需要进行窗口切换】
17.manage() 此方法可以获取options(浏览器菜单操作的对象)–浏览器操作对象
Options options = driver.manage();
options.window().fullscreen();// 当前窗口全屏
options.window().maximize();// 最大化// 当前窗口的大小
Dimension d = options.window().getSize();
System.out.println("窗口的高度是:"+ d.getHeight());
System.out.println("窗口的宽度是:"+ d.getWidth());// 当前窗口的位置
System.out.println(options.window().getPosition().getX());
System.out.println(options.window().getPosition().getY());18.navigate对象 --导航对象

四、三大等待

如果找不到元素可以先在控制台定位,如果定位到了,就给前面加上等待(Thread.sleep(1000))

1.硬性等待–线程休眠,强制等待
Thread.sleep(long millis);//代码执行速度太快
2.隐式等待–在设置的超超时时间范围内不断查找元素,直到找到元素或者超时(全局)在driver实例化之后设置等待
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));//在driver实例化完成之后设置隐式等待,设置超时时间为5s
driver.manage().timeouts().implicitlyWait(5,TimeUnit.SECONDS);
3.显示等待

在这里插入图片描述

  • 存在不一定可见,可见是用户能看见
WebDriverWait webDriverWait=newWebDriverWait(driver, Duration.ofSeconds(5));
webDriverWait.until(ExpectedConditions.visibilityOfElementLocated(By.linkText("腾讯课堂_专业的在线教育平台")));
driver.findElement(By.linkText("腾讯课堂_专业的在线教育平台")).click();

五、特殊元素定位与操作

1.模态框(alert,confirm)

(1)如何测试知道本地html的路径(直接拖到cmd里面)在这里插入图片描述

  • alert和confirm的写法一样
driver.findElement(By.id("btn2")).click();
Thread.sleep(2000);//switch.alert找到对应的弹框
Alert alert= driver.switchTo().alert();
alert.accept();//确认
alert.dismiss();//取消
System.out.println(alert.getText());
2.iframe切换

在这里插入图片描述
在这里插入图片描述

3.window

在这里插入图片描述

driver.get("D:\\test\\a.html");
driver.findElement(By.id("a")).sendKeys("这是第一个窗口");
System.out.println("跳转前的窗口句柄"+driver.getWindowHandle());//跳转前的窗口句柄5e702d4c-3069-4ac0-bcd3-eba2d509e83f
Thread.sleep(2000);//切换到B窗口//虽然已经页面到B窗口,但是句柄已经到了A窗口中,所以你操作的还是A窗口
driver.findElement(By.linkText("跳转到b")).click();
System.out.println("跳转后的窗口句柄"+driver.getWindowHandle());//跳转后的窗口句柄5e702d4c-3069-4ac0-bcd3-eba2d509e83f//句柄的切换//进入到B窗口之后,获取到所有的句柄
Set<String> handles=driver.getWindowHandles();//对窗口集合进行遍历for(String handle:handles){//切换句柄
    driver.switchTo().window(handle);//我怎么知道B窗口的句柄呢if(driver.getTitle().equals("bhtml")){//符合要求,跳出循环break;}}//对B窗口的元素进行定位
driver.findElement(By.id("b")).sendKeys("这是第二个窗口");
4.select下拉框

在这里插入图片描述
在这里插入图片描述

5.时间日期控件

(1)控件没有限制手动输入,则直接调用sendKeys方法写入时间数据
(2)控件有限制输入,则可以执行一段is来改变元素的value属性值

JavascriptExecutor jsExecutor=(JavascriptExecutor) driver;
jsExecutor.executeScript("..");
  • 在控制台可以修改html

在这里插入图片描述在这里插入图片描述

6.鼠标操作

示例网址:http://www.treejs.cn/v3/demo/cn/exedit/drag.html

driver.get("http://www.treejs.cn/v3/demo/cn/exedit/drag.html");
WebElement sourceElement=driver.findElement(By.id("treeDemo_2_span"));
WebElement targetElement=driver.findElement(By.id("treeDemo_3_span"));//实例化actions对象,鼠标的相关操作
Actions actions=newActions(driver);//拖拽的相关操作,release().build().perform()固定搭配
actions.clickAndHold(sourceElement).moveToElement(targetElement).release().build().perform();
7.文件上传

在这里插入图片描述
在这里插入图片描述


本文转载自: https://blog.csdn.net/m0_69702096/article/details/141425497
版权归原作者 _朝夕. 所有, 如有侵权,请联系我们删除。

“selenium知识点”的评论:

还没有评论