Selenium基础知识

一、环境搭建(以java为例)

1.下载chrome浏览器

https://www.google.cn/intl/zh-CN/chrome/

2.查看chrome浏览器版本

设置+关于chrome

3.下载chrome浏览器驱动

下载浏览器对应版本的

ChromeDriver - WebDriver for Chrome - Downloads

120以上版本:Chrome for Testing availability

4.配置环境变量

点击我的电脑/此电脑>>右键点击属性>>点击高级系统设置>>环境变量>>系统变量。

点击系统变量中的path,点击新增,并将驱动的安装目复制填入后,点击确定。

5.Java创建项目,添加pom文件中添加依赖

java 复制代码
<dependencies>
    <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>3.141.59</version>
    </dependency>
</dependencies>
java 复制代码
import org.openqa.selenium.chrome.ChromeDriver;

public class Main {
    public static void main(String[] args) {
        WebDriver webDriver = new ChromeDriver();
    }
}

二、元素定位

1.CSS选择

(1)类选择器

class=""

java 复制代码
webDriver.findElement(By.cssSelector(".前端样式类名"));

(2)id选择器

java 复制代码
webDriver.findElement(By.cssSelector("#前端样式类名"));

(3)标签选择器

标签名作为定位

2.xpath

java 复制代码
webDriver.findElement(By.xpath("//*[@id=\"s-top-left\"]/a[1]")).click();

(1)绝对路径

(2)相对路径

相对路径+索引

相对路径+属性值

相对路径+通配符

相对路径+文本匹配

3.css选择器 vs xpath

CSS选择器定位元素效率高

三、操作测试对象

1.click

点击对象

java 复制代码
webDriver.findElement(By.cssSelector("#kw")).click();

2.send_key

在对象上模拟按键输入

java 复制代码
webDriver.findElement(By.cssSelector("#kw")).sendKeys("你好");

3.clear

清除对象输入的文本内容

4.submit

提交

点击元素需是在form标签内

5.text

获取元素文本信息

四、等待

1.sleep(等待时间)

强制等待

2.隐式等待

最长等待某个时间点,获取到页面元素,就执行下面代码,如果这个时间还没有找到元素就报错。

java 复制代码
WebDriverWait wait= new WebDriverWait(webDriver,3000);

五、打印信息

1.title

获取title

java 复制代码
String title= webDriver.getTitle();

2.获取url

java 复制代码
String url= webDriver.getCurrentUrl();

六、浏览器操作

1.浏览器最大化

java 复制代码
webDriver.manage().window().maximize();

2.设置浏览器大小

java 复制代码
 webDriver.manage().window().setSize(new Dimension(长度,宽度));

3.浏览器前进和后退

后退

java 复制代码
webDriver.navigate().back();

前进

java 复制代码
webDriver.navigate().forward();
java 复制代码
webDriver.navigate().to("网址");

等同于 webDriver.get();

4.滚动条

java 复制代码
((JavascriptExecutor)webDriver).executeScript("document.documentElement.scrollTop=10000");

5.关闭浏览器

javascript 复制代码
webDriver.quit();
webDriver.close();

区别:

1.quit关闭整个浏览器,close关闭当前页面

2.quit清空缓存,close不会清空缓存

七、键盘按键

1.键盘按键使用

java 复制代码
webDriver.findElement(By.cssSelector("#kw")).sendKeys(Keys.CONTROL);

2.组合键使用

java 复制代码
webDriver.findElement(By.cssSelector("#kw")).sendKeys(Keys.CONTROL,"A");

八、鼠标事件

java 复制代码
//创建 Actions
Actions action=new Actions(webDriver);
        //找到按钮
WebElement target= webDriver.findElement(By.cssSelector(".a3"));
        //鼠标移动到这个按钮
action.moveToElement(target).contextClick().perform();

九、选择框

java 复制代码
List <WebElement> webElements=webDriver.findElements(By.cssSelector("input"));
       for(int i=0;i<webElements.size();i++){
           //getAttribute获取页面上的元素属性
           if(webElements.get(i).getAttribute("type").equals("radio")){
               webElements.get(i).click();
           }
       }

十、上传文件

java 复制代码
webDriver.get("");
webDriver.findElement(By.xpath("/html/body/input")).sendKeys("上传文件名");

十一、frame

java 复制代码
webDriver.switchTo().frame("id名");

十二、下拉框

java 复制代码
 WebElement webElement= webDriver.findElement(By.cssSelector("#ShippingMethod"));
        Select select=new Select(webElement);
        select.selectByIndex(1);
        select.selectByValue("8.34");

十三、alert、confirm、prompt 的处理

text 返回alert/confirm/prompt 中的文字信息

accept 点击确认按钮

dismiss 点击取消按钮,如果有的话

send_keys 输入值,如果alert 没有对话框就不能用了,不然会报错

java 复制代码
//输入弹窗
webDriver.switchTo().alert().sendKeys("name");
       //点击确定
 webDriver.switchTo().alert().accept();
       //点击取消
 webDriver.switchTo().alert().dismiss();

十四、窗口切换

java 复制代码
 //当前窗口句柄
        String cur_handle=webDriver.getWindowHandle();
        //当前浏览器当前所有句柄
        Set<String> all_handles=webDriver.getWindowHandles();
        String target="";
        for(String temp :all_handles){
            target=temp;
        }
        //切换窗口句柄
        webDriver.switchTo().window(target);

十五、截图

下载依赖

java 复制代码
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.11.0</version>
</dependency>
java 复制代码
 File file=((TakesScreenshot) webDriver).getScreenshotAs(OutputType.FILE);
//file保存磁盘
  FileUtils.copyFile(file,new File("保存路径"));
相关推荐
大霞上仙9 小时前
selenium 在已打开浏览器上继续调试
python·selenium·测试工具
互联网杂货铺14 小时前
几个常见的Jmeter压测问题
自动化测试·软件测试·测试工具·jmeter·职场和发展·测试用例·压力测试
大霞上仙14 小时前
postman读取文件执行
测试工具·postman
测试者家园17 小时前
ChatGPT与接口测试工具的协作
软件测试·测试工具·chatgpt·接口测试·ai赋能·用chatgpt做软件测试·测试图书
ggggyyyyy092817 小时前
接口测试-Fidder及jmeter使用
测试工具·jmeter·fiddler·接口测试
测试199818 小时前
Chrome+Postman做接口测试
自动化测试·软件测试·chrome·测试工具·职场和发展·测试用例·postman
爱学测试的李木子21 小时前
性能】JDK和Jmeter的安装与配置
java·开发语言·软件测试·测试工具·jmeter
wang09071 天前
抓包之使用wireshark抓http2的包
网络·测试工具·wireshark
sky_feiyu1 天前
wireshark初认识
网络·测试工具·wireshark
tan_135100751881 天前
罗德与施瓦茨NRP33SN,一款独立、特性齐全的功率探头
网络·科技·测试工具·信息与通信