• 元素定位   
             findElement() 方法返回一个元素, 如果没有找到,会抛出一个异常 NoElementFindException()
             findElements()方法返回多个元素, 如果没有找到,会返回空数组, 不会抛出异常。
             语法:WebElement element = driver.findElement(By.XXXX("XXXX")); 
以下为定位方式:by.后面的
id,name,className,tagName,linkText("链接的全部文字"),partialLinkText("链接的部分文字"),cssSelector(“css表达式”),xpath("//input[@id='XXXX']")
xpath地址常见语法(详细内容见另笔记)://XXXX[@XX='XXXX']     或    //XXXX[contains,(@XXXX,'XXXX')]        或       //*[@id='list']/li[1]/div[2]/span[1]    
 
  • 页面操作
             driver.navigate().back();                 //回到上一页
             driver.navigate().forward();            //跳转下一页          
             driver.getTitle();                            // 获取当前页面的标题
             driver.getCurrentUrl();                   // 获取当前页面的url
 
  • 元素常规操作
             WebElement.click();   
             WebElement.clear();                                     //清空     
             WebElement.sendKeys("掘金网");         //输入文本
             WebElement.sendKeys("c:\shao.png");        
             WebElement.getText();
 
  • 判断相关方法
             WebElement.isEnabled()                              //是否可点击
             WebElement.isSelected();                            //是否选中
      WebElement.isDisplayed()        //是否显示
 
  • 鼠标操作 
         需要先实例化一个Actions,且每次点击都必须添加perform(翻译:执行)
            Actions action = new Actions(driver);
            action.click().perform();                                                  //鼠标左击 
            action.contextClick().perform();                                     //鼠标右击
            action.doubleClick().perform();                                      //鼠标双击
            action.moveToElement(WebElement XX).perform();    //鼠标悬停
     // 鼠标拖动实现
            driver.findElement(By.xpath("//*[@id='tbPic']")).click();
            WebElement begin = driver.findElement(By.xpath("//*[@id='list']/li[1]/div[2]/span[1]"));
            WebElement end = driver.findElement(By.xpath("//*[@id='list']/li[2]/div[2]/span[1]"));
            action .dragAndDrop(begin, end).perform();
     action .dragAndDropBy(WebElement element, int x, int y).perform();   //将element元素水平拖动x,垂直拖动y像素
 
  • 点选框及下拉列表框操作
     //单选框
             WebElement radio=driver.findElement(By.id("XXXXX"));
             radio.isSelected();                  //判断某个单选项是否被选中            
             radio.click();                            //选择某个选项
             radio.clear();                           //清空选项
     //复选框
             WebElement checkbox = driver.findElement(By.id("XXXXX"));
             checkbox.isSelected();//是否选中
             checkbox.click();
     //下拉框选择
             Select select = new Select(driver.findElement(By.id("frequency")));
             select.selectByValue("1");
             driver.findElement(By.id("validDays")).click();
 
  • 弹框警告处理
             Alert alert = driver.switchTo().alert();
             alert.accept();                                      //确定
             alert.dismiss();                                     //取消
 
  • iframe中元素定位方法:先定位iframe,用switchTo().frame(XXXXX)切换再定位其他元素
             WebElement iframeElement = driver.findElement(By.xpath("//iframe[contains(@id,'x-URS-iframe')]"));
             driver.switchTo().frame(iframeElement);
       //要操作原页面元素,需要切回
             driver.switchTo().defaultContent();                     //回到默认的页面
             driver.switchTo().parentFrame();                         //切回父级框             
 
  • 弹出页面切换操作(如多个页面间切换)
             getWindowHandle(); 与 getWindowHandles();
    //举例说明
     public void windowshandle() {
            windowsHandle = driver.getWindowHandle();                             //获取当前页面handle
            Set<String> handles = driver.getWindowHandles();                     //获取浏览器所有页面handle
            for(String s : handles) {                                                                   //JDK1.5 for循环新写法,简洁效率
                    if(s.equals(windowsHandle)) {
                            continue; //遍历,如果handles中的一个handle等于当前页面handle,说明没切换页面,跳出本次循环,继续下次循环
                    }
                    System.out.println(s);
                    driver.switchTo().window(s);
           }
           driver.findElement(By.linkText("案例")).click();
    }
 
  • 元素等待
    //分3种等待:
  1. 强制等待,休眠线程(死等):Thread.sleep(2000);   //等待2s
  2. 隐式等待: 如果在规定的时间,找到了元素就继续操作,否则就报错(#条件满足,还是会继续等待完时间)
    * 语法: driver.manage().timeouts().implicitlyWait(timeout, TimeUnit.SECONDS);
    * (第一个参数将接受时间作为整数值,例如10(共等待10s),第二个参数将接受时间测量)
    * 应用场景:全局,例如所有元素在10s没出现都抛出异常
  3. 显示等待:如果在规定的时间内,满足条件就继续操作,否则就报错(#条件满足就操作,不继续等待)
    * 使用前先实例化: WebDriverWait wait = new WebDriverWait(driver,timeout);
    * (第一个参数为WebDriver对象,第二个参数为整数时间,例如10(共等10s))
    * 语法:(ExpectedConditions类中方法)wait.until(ExpectedConditions.XXXX);
     ExpectedConditions方法:
         .elementSelectionStateToBe()
                   例如://判断某个元素的选中状态是否符合预期
                        ExpectedConditions.elementSelectionStateToBe(By.xpath("//*[@id='kw']"), true);
                            //判断某个元素(已定位)的选中状态是否符合预期
                        ExpectedConditions.elementSelectionStateToBe(driver.findElement(By.xpath("//*[@id='kw']")), false);
 
         .elementToBeSelected()
                   例如://判断某个元素是否被选中,一般用在下拉列表
                        ExpectedConditions.elementToBeSelected(By.xpath("//*[@id='kw']"));
 
         .frameToBeAvaliableAndSwitchToIt()
                   例如://判断该表单是否可以切过去,可以就切过去并返回true,否则放回false
                        ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.id("**"));
 
         .invisibilityOfTheElementLocated()
                   例如://判断某个元素是否不存在于DOM或不可见
                        ExpectedConditions.invisibilityOfElementLocated(By.xpath("//*[@id='kw']"));
 
         .invisibilityOfElementWithText()
 
         .presenceOfAllElementsLocatedBy()
                   例如://只要存在一个就是true
                        ExpectedConditions.presenceOfAllElementsLocatedBy(By.xpath("//*[@id='kw']"));
         .textToBePresentInElement()
 
         .textToBePresentInElementLocated()
                   例如://元素中的text是否包含语气的字符串
                        ExpectedConditions.textToBePresentInElementLocated(By.xpath("//*[@id='kw']"), "百度一下");
 
         .visibilityOfAllElements()//判断所有元素是否可见
 
         .textToBePresentInElementValue()
                   例如://元素的value属性中是否包含XXXX的字符串
                        ExpectedConditions.textToBePresentInElementValue(By.xpath("//*[@id='kw']"), "XXXX");
 
         .titleIs()    //标题是不是XXXX
 
         .titleContains() //标题是否包含XXXX
 
         .visibilityOf()
                   例如://判断元素(定位后)是否可见
                        ExpectedConditions.visibilityOf(driver.findElement(By.xpath("//*[@id='kw']")));
 
         .alertIsPresent()//判断页面中是否存在alert
 
         .visibilityOfAllElementsLocatedBy()
 
         .visibilityOfElementLocated()
                   例如://判断元素是否可见(非隐藏,并且元素的宽和高都不等以0)
                        ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='kw']"));
 
         .presenceOfElementLocated(By.id("XXX"))          
                   例如://判断该元素是否被加载在DOM中,并不代表该元素一定可见
                        ExpectedConditions.presenceOfElementLocated(By.xpath("//*[@id='kw']"));
 
         .elementToBeClickable(By.id("XXX"))                              
                   例如://判断元素是否可以点击
                        ExpectedConditions.elementToBeClickable(By.xpath("//*[@id='kw']"));
 
 

JavaSelenium 页面常用基本操作语法的更多相关文章

  1. 转 .md即markdown文件的基本常用编写语法(图文并茂)

    原文链接:.md即markdown文件的基本常用编写语法(图文并茂) 序言: 很久没有写博客了,感觉只要是不写博客,人就很变得很懒,学的知识点感觉还是记不住,渐渐地让我明白,看的越多,懂的越少(你这话 ...

  2. Vue常用模板语法

    常用模板语法   本篇将在上一篇的基础上记录文本渲染.表达式.过滤器以及常用指令的简单用法. 一.文本渲染 Vue支持动态渲染文本,即在修改属性的同时,实时渲染文本内容.同时为了提高渲染效率,也支持只 ...

  3. EditPlus轻量级编辑器配置常用的语法规则!

    打开EditPlus编辑器:工具 ---- 参数设置 ---- 文件 ---- 设置&语法: 先配置简单的CSS语法: 勾选下面的 “自动完成” ,加载对应的ACP文件,配置一些常用的语法: ...

  4. layui js 常用语句语法

    烂笔头: layui组件使用 注意layui的版本. 在head里需要引入css/js文件. 出现 form.verify,form.val is not a function的错误信息时,注意版本, ...

  5. chrome浏览页面常用快捷键

    1.chrome浏览页面常用快捷键 Ctrl+N 打开新窗口. Ctrl+T 打开新标签页. Ctrl+W关闭当前标签 Ctrl + F4 关闭chrome浏览器 Ctrl+Tab 或 Ctrl+Pg ...

  6. .md 即 markdown 文件的基本常用编写语法

    0. 前言 Markdown 是一种纯文本格式的标记语言.通过简单的标记语法,它可以使普通文本内容具有一定的格式.现在的项目都使用了 git 仓库,再加上远程仓库 github 托管,那就难免要写一些 ...

  7. Thinkcmf:页面常用函数

    Thinkcmf:页面常用函数 全站seo: 文章列表: {$site_seo_title}        <!--SEO标题--> {$site_seo_keywords}   < ...

  8. MatplotLib常用基本操作

    本文记录matlibplot常用基本操作,都是基本功能,不涉及复杂联合操作,其中各用法详细用法可参考官网: 1. 基本画图操作 ##mofan_matplotlib.pyplot import mat ...

  9. 移动端和PC端页面常用的弹出层

    我们在页面的时候,很多时候用到了弹出层,消息提醒,确认框等等,统一样式的弹出框可以使页面更加优美.在此,我整理一下我们项目的移动端和PC端页面常用的弹出层. 一.移动端 我们需在页面引入弹出框的样式和 ...

随机推荐

  1. SQL,范式,事务

    数据库范式: 构造数据库必须遵循一定的规则.在关系数据库中,这种规则就是范式. 范式是符合某一种级别的关系模式的集合.数据库中的关系必须满足一定的要求,即满足不同的范式. 满足最低要求的范式是第一范式 ...

  2. hdu 1754 I Hate It(线段树区间求最值)

    I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  3. 【Learning Notes】线性链条件随机场(CRF)原理及实现

    1. 概述条件随机场(Conditional Random Field, CRF)是概率图模型(Probabilistic Graphical Model)与区分性分类( Discriminative ...

  4. 洛谷P5019 铺设道路 题解 模拟/贪心基础题

    题目链接:https://www.luogu.org/problemnew/show/P5019 这道题目是一道模拟题,但是它有一点贪心的思想. 我们假设当前最大的深度是 \(d\) ,那么我们需要把 ...

  5. php Restful设计

    1.restful是基于资源的,面向资源架构风格(一个链接,一张图.一个文本等等) 2.restful的http协议 2.1 url: 2.1.1 port 服务端口,默认为80 2.1.2 path ...

  6. Vue打包后放到服务器出现Loading chunk {n} failed 错误

    导航栏点击切换时 会出现Loading chunk {n} failed  ,刷新之后便不会出现.而且n在最新的build的文件中,n没有存在 偶然一次发现,项目更新迭代开发时上传测试环境后就会出现, ...

  7. Native memory allocation (mmap) failed to map xxx bytes for committing reserved memory

    遇到问题 在服务器上运行 nexus 出现Native memory allocation (mmap) failed to map 838860800 bytes for committing re ...

  8. H3C NAT组网和常用术语

  9. python基础十四之匿名函数

    匿名函数 处理简单问题的简化函数,关键字lambda. # 格式:函数名 = lambda 参数:返回值 anonymity = lambda s: s ** 0.5 print(anonymity( ...

  10. win2d 通过 CanvasActiveLayer 画出透明度和裁剪

    本文告诉大家如果在 UWP 的 win2d 通过 CanvasActiveLayer 创建一层,在这里画出的图片有透明度或者裁剪 在 win2d 如果需要对某个元素裁剪,可以使用很多方法,本文只是告诉 ...