java selenium自动化测试工具学会可写网页脚本

import org.junit.*;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.nio.file.Path;
import java.nio.file.Paths;
import java.time.Duration;
import java.util.Set;

/*1.需要配置selenium 相关的依赖
               <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>4.16.1</version>
        </dependency>

            2.需要注意的是浏览器驱动版本需要和浏览器版本一直比如
               浏览器版本99.0.4844.51驱动版本也需要99.0.4844.51
               驱动去http://www.jianshu.com/p/305ea89b87e9下载然后解压出来放在src包下
               建立个子包

               3.selenium   只支持火狐浏览器FirefoxDriver()   谷歌浏览器ChromeDriver()
                                      win10自带的浏览器EdgeDriver();   ie浏览器 InternetExplorerDriver()
                                      通过WebDrive new 创建对象
            */

public class testclass {

    // 创建浏览器对象
    public WebDriver wangzhan;

    //@Before表示单元测试运行之前执行方法
    @Before
    public void qian() {

        //Paths.get需要输入表示驱动地址
        Path p1 = Paths.get("src\\javas\\msedgedriver.exe");

        //配置驱动系统路径webdriver.chrome.driver是固定后面加上下载好的驱动地址  2.参照上面写的放
        System.setProperty("webdriver.chrome.driver", p1.toAbsolutePath().toString());

        /* 创建浏览器实例用来操作网页行为对象ChromeDriver表示谷歌浏览器如果需要其他浏览器也可以选择
         */
        wangzhan = new EdgeDriver();

        //最大化网页
        wangzhan.manage().window().maximize();

        //调用get表示需要打开的网址
        wangzhan.get("https://account.aliyun.com/");
        //刷新浏览器
        wangzhan.navigate().refresh();
    }

    //测试方法
//         @Test
    public void testtest() throws InterruptedException {

      //定位
        //*1.findElement(By.id("kw"))表示定位  去前端页面获取搜索框获取id名字定位搜索框

            /*2.可以使用By.id来定位也可以使用By.class或者by.name来定位
            也可以通过css表达式来定位比如By.xpath("//*[@id=\"navs_1\"]")*/

            // 3 .//*[@class="bg s_btn"] 表示搜索看看有没有页面有没有相同属性
                   //*表示从任意位置开始查找 @表示匹配的属性       ctrl+f来搜索相同属性

             /*4.//a[@class="bg s_btn" and text()="酒店"] //a表标签名and text()
                    表示可以且其他属性text()表示文本内容*/

      //   5.sendKeys("洛克王国")表示搜索框里面需要搜索的内容
     wangzhan.findElement(By.id("kw")).sendKeys("洛克王国");

        //click();表示点击行为
      wangzhan.findElement(By.id("su")).click();


        Thread.sleep(3000);

    }

   //点击行为
//    @Test
    public void sheshi() throws InterruptedException {
        //click();表示点击行为 //*[@id="navs_2"]
      //   wangzhan.findElement(By.id("navs_1")).click();
        wangzhan.findElement(By.xpath("//*[@id=\"navs_1\"]")).click();
        Thread.sleep(3000);

    }

   //给界面添加动作监听模拟鼠标行为
//    @Test
    public void ceshmose() throws InterruptedException {
        //模拟过程中鼠标不能移动或者操作否则运行失败

        //监听网页绑定动作
        Actions js = new Actions(wangzhan);

        //用浏览器对象定位属性
        WebElement gengdiou = wangzhan.findElement(By.linkText("更多"));
        Thread.sleep(6000);

        //moveToElement获取位置模拟鼠标移动
        js.moveToElement(gengdiou);

        //  By.xpath 定位
        WebElement element = wangzhan.findElement(By.xpath("//a[@class=\"img-spacing\"and @name=\"tj_mp3\" ]"));
        //moveToElement移动  2.click()点击  3.perform();执行操作
        js.moveToElement(element).click().perform();

    }

    //模拟鼠标拖拽点击行为
//    @Test
    public void ceshi2(){
        Actions hc = new Actions(wangzhan);
        WebElement mask = wangzhan.findElement(By.id("mask"));
        //获取位置右键等待三秒
        hc.moveToElement(mask).contextClick().pause(3000);
        WebElement cmitem_start = wangzhan.findElement(By.id("cmitem_start"));
        //移动鼠标点击
        hc.moveToElement(cmitem_start).click();
        //表示按住左键不松
        hc.clickAndHold();
        //拖拽位置
        hc.moveByOffset(200,100);
        //松开左键
        hc.release();
         //点击右键
        hc.contextClick();
        //停止3秒
        hc.pause(3000);
        //获取终点位置
        WebElement cmitem_end = wangzhan.findElement(By.id("cmitem_end"));
        //移动点击
        hc.moveToElement(cmitem_end).click().perform();

    }

     //切换网页
//    @Test
    public void cesshi6() throws InterruptedException {
        //不模仿鼠标操作鼠标可以自由活动
        wangzhan.findElement(By.linkText("学术")).click();

        //获取当前网页位置这里是字符串类还有一种是iframe类注意
        String windowHandle = wangzhan.getWindowHandle();

        System.out.println(windowHandle);

       //获取所有网页位置
        Set<String> windowHandles = wangzhan.getWindowHandles();

        for (String handle : windowHandles) {
              //不等于当前网页执行切换操作
              if(handle !=  windowHandle ){
                  wangzhan.switchTo().window(handle );
              }
        }

        wangzhan.findElement(By.xpath("//*[text()=\"我知道了\"]")).click();
        wangzhan.findElement(By.xpath("//input[@name=\"wd\"]")).sendKeys("洛克王国");
        wangzhan.findElement(By.xpath("//*[@id=\"su\"]")).click();

        wangzhan.switchTo().window(windowHandle);

    }

     //嵌套网页登录操作
//    @Test
    public void ceshi7() throws InterruptedException {
        //这里要仔细查看是不是iframe属性的内嵌网页才能切换,不是网页可直接操作
        //这里是iframe类
       WebElement element = wangzhan.findElement(By.id("alibaba-login-box" ));

       //frame切换指定网页按照WebElement 类切换
       wangzhan.switchTo().frame(element);

        wangzhan.findElement(By.id("fm-login-id")).sendKeys("123456");

    }


    //  隐示等待就是说一直搜索当前界面设置时间全局等待
//    @Test
    public void ceshi8(){
     //   设置等待时间6秒
        wangzhan.manage().timeouts().implicitlyWait(Duration.ofSeconds(6));
        WebElement element = wangzhan.findElement(By.id("alibaba-login-box" ));
        //frame切换指定网页按照WebElement 类切换
        wangzhan.switchTo().frame(element);
        wangzhan.findElement(By.id("fm-login-id")).sendKeys("123456");
    }

    //显示等待就是说一直搜索每一个方法或者某一项界面设置时间
        @Test
    public void ceshi9() throws InterruptedException {
        //   设置页面等待时间10秒
            WebDriverWait webDriverWait = new WebDriverWait(wangzhan, Duration.ofSeconds(10));
            //设置要等待那一个属性的出现
            WebElement until = webDriverWait.until(ExpectedConditions.presenceOfElementLocated(By.id("alibaba-login-box")));
            //frame切换指定网页按照WebElement 类切换
        wangzhan.switchTo().frame(until );
        wangzhan.findElement(By.id("fm-login-id")).sendKeys("123456");

        wangzhan.findElement(By.name("fm-login-password")).sendKeys("jige666");

            wangzhan.findElement(By.xpath("//*[@class=\"fm-button fm-submit password-login\"]")).click();

    }

    //@After表示单元测试运行之后执行方法
    @After
    public void hou() throws InterruptedException {
        Thread.sleep(3000);
        //关闭浏览器
        wangzhan.quit();
    }






}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值