首页 > 编程语言 >Selenium Web 自动化 - Selenium(Java)环境搭建 (new)

Selenium Web 自动化 - Selenium(Java)环境搭建 (new)

时间:2023-08-11 12:22:58浏览次数:45  
标签:Web Java Thread webDriver Selenium driver window sleep selenium

Selenium Web 自动化 - Selenium(Java)环境搭建 (new)

2023-08-11

0 背景

  • 开发工具idea
  • 代码管理maven
  • jdk1.8
  • webdriver chrome

1 chromedriver & chrome

chromedriver和chrome要对应上:

2 jar包 & 代码

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>cn.qm</groupId>
    <artifactId>seleniumDemo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>8</source>
                    <target>8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>LATEST</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-api</artifactId>
            <version>LATEST</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-chrome-driver</artifactId>
            <version>LATEST</version>
        </dependency>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.14.3</version>
        </dependency>
    </dependencies>
</project>
View Code

code

import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import java.time.Duration;
import java.util.Iterator;
import java.util.Set;

public class SearchBaidu {
    public static void main(String[] args) throws InterruptedException {
        String chromedriver_win="D:\\Code\\seleniumDemo\\src\\main\\resources\\chromedriver.exe";
        System.setProperty("webdriver.chrome.driver", chromedriver_win);

        WebDriver webDriver=  new ChromeDriver();

        MutiWindowTest(webDriver);

        Thread.sleep(2000);
        webDriver.get("https://www.baidu.com");
        webDriver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
        Dimension d =new Dimension(800,600);
        webDriver.manage().window().setSize(d);
        Thread.sleep(2000);
        Point p=new Point(500,300);
        webDriver.manage().window().setPosition(p);
        Thread.sleep(2000);
        webDriver.manage().window().fullscreen();
        Thread.sleep(3000);
        webDriver.manage().window().maximize();
        WebElement searchInput=webDriver.findElement(By.id("kw"));
        //定位到文本,将文本高亮显示
        //创建一个JavascriptExecutor对象
        JavascriptExecutor js =(JavascriptExecutor)webDriver;

        //新闻文本高亮显示颜色
        js.executeScript ( "arguments[0].setAttribute('style', arguments[1]);",searchInput,"background: orange; border: 2px solid red;");

        Thread.sleep (5000);
        searchInput.sendKeys("selenium1 selenium2 区别");
//        WebElement searchBtn=webDriver.findElement(By.id("su"));
        WebElement searchBtn  = webDriver.findElement(By.cssSelector("input[value=百度一下]"));
        searchBtn.click();
        Thread.sleep(2000);

        webDriver.quit();
    }

    private static void MutiWindowTest(WebDriver driver)
            throws InterruptedException {
        WebDriver newWindow = null ;
        driver.get("http://www.hao123.com/");
        //浏览器最大化
        driver.manage().window().maximize();
        //获取当前页面句柄
        String current_handles = driver.getWindowHandle();
        //点击 百度链接
        driver.findElement(By.xpath("//*[@data-title='百度' and contains(@class,'sitelink')]")).click();
        //接下来会有新的窗口打开,获取所有窗口句柄
        Set<String> all_handles = driver.getWindowHandles();
        //循环判断,把当前句柄从所有句柄中移除,剩下的就是你想要的新窗口
        Iterator<String> it = all_handles.iterator();
        while(it.hasNext()){
            if(current_handles == it.next()) continue;
            //跳入新窗口,并获得新窗口的driver - newWindow
            newWindow = driver.switchTo().window(it.next());
        }
        //接下来在新页面进行操作,也就是百度首页,我们输入一个java关键字进行搜索
        Thread.sleep(1000);
        WebElement baidu_keyowrd = newWindow.findElement(By.id("kw"));
        baidu_keyowrd.sendKeys("java");
        WebElement searchBtn=newWindow.findElement(By.id("su"));
        searchBtn.click();
        Thread.sleep(3000);
        //关闭当前窗口,主要使用close而不是quite,
        newWindow.close();
        Thread.sleep(1000);
        driver.switchTo().window(current_handles);
        System.out.println(driver.getCurrentUrl());
    }
}

 

标签:Web,Java,Thread,webDriver,Selenium,driver,window,sleep,selenium
From: https://www.cnblogs.com/Ming8006/p/17622696.html

相关文章

  • JAVA | 如何安装JDK并配置
    安装JDK首先去Oracle官网。(网址随时会变,自行百度其官网就可以)点击产品->java。点击DownloadJavanow.我们可以下载JDK20、JDK17、下面还可以下载JDK8和JDK11.我们点击自己对应的操作系统下载,下载的时候需要一个Oracle账户,自己注册一下即可。下载完毕:双击安装:下一步。......
  • java 字符串中的编码和解码问题
     ......
  • java 字符流-编码
            ......
  • 一个简单利用WebGL绘制频谱瀑布图示例
    先看效果还是比较节省性能的,这个还是包含了生成测试数据的性能,实际应用如果是直接通信获得数据应该还能少几毫秒吧!准备工作用了React,但是关系不大WebGL的基础用法(推荐看一看掘金里的一个教程:WebGL入门与实践)有兴趣应该读一读这个的源码GPU.JS,因为一开始偷学了一手flatten......
  • 基于JAVA的火车订票系统的设计与实现
    随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分使用计算机对飞机信息进行管理,具有手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这......
  • Java单例模式详解
    Java单例模式详解单例模式是设计模式中的一种,它确保某一个类只有一个实例,并提供一个全局点来访问这个实例。这在某些场景中是非常有用的,例如,配置管理、线程池、缓存、日志对象等。1.单例模式的基本原则:构造函数是私有的。有一个私有静态变量来保存类的唯一实例。有一个公有静态方......
  • 初学者Java应该学jdk什么版本?
    Java的多个版本在历史上都有其重要性,但对于初学者而言,选择合适的版本来学习非常关键。以下是对于初学者来说选择JDK版本的一些建议:1.考虑最新稳定版本最新版本:目前JDK17是最新的长期支持版本(LTS)。选择最新的LTS版本作为学习起点是个不错的选择,因为它结合了稳定性和较新的特性。2.......
  • javaScript操作符
    1运算符运算符(operator)也被称为操作符,是用于实现赋值、比较和执行算数运算等功能的符号。JavaScript中常用的运算有:算数运算符递增和递减运算符比较运算符逻运算符赋值运算符2算术运算符2.1算术运算符的概述概念:算术运算符使用的符号,用于执行两个变量或值的算术运算。运算符描......
  • java中int默认是0,Integer默认是null
    在Java中,int是一种原始数据类型,它默认的初始值是0。原始数据类型在声明时会自动初始化为其默认值。而Integer是Java中的一个包装类,它用于将int封装为对象。Integer对象的默认值是null,即未经初始化时,Integer对象的值为null。需要注意的是,当我们使用Integer对象时,如果没有明确地给......
  • centos7中用docker部署java项目调用mvs海康相机拍照踩坑
    一、海康机器人官网下载MVSV2.1.2(Linux)二、解压后将tar.gz包传入centos7中三、解压并安装MVS 安装 四、执行MVS,并查看环境变量是否正确安装后会新增/opt/MVS目录,进入/opt/MVS/bin目录执行./MVS 执行完成后查看是否已经自动添加环境变量,执行vi/etc/profile,会自动......