zoukankan      html  css  js  c++  java
  • 0.0---selenium+java自动化基础01---元素定位和操作

    一、定位方法

    1、通过ID定位元素:driver. findElement(By.id(value)); 

    2、通过元素的名称定位元素: driver. findElement(By.name( value));  

    3、通过元素的class属性定位元素:driver. findElement(By.className( value)); 

    4、通过元素的标签名称定位元素:driver. findElement(By.tagName( value)); 

    5、通过元素的css定位元素:driver. findElement(By.cssSelector( value)); 

           例:findElement(By.cssSelector(“.s_ipt”)) ; -------------------------------点(.)表示通过class属性定位元素

           例:findElement(By.cssSelector(“#su”)) ;-------------------------------------#表示通过id属性定位元素

           例:findElement(By.cssSelector(“input”));------------------------------------表示通过标签名定位

           例:findElement(By.cssSelector(“span>input”)) ;------------------------------通过父子关系定位

           例:findElement(By.cssSelector(“input[maxlength=’100’]”));-----------------通过属性+属性值定位,保证唯一性

           例:findElement(By.cssSelector(“span.bg s_ipt_wr>input.s_ipt”));---------组合定位(父子+属性),input的class属性值叫s_ipt

    6、通过元素的html中的位置路径定位元素:driver. findElement(By.xpath( value));

           例:driver.findElement(By.xpath(/html/body/div/div[2]/div/div/div/from/span[2]/input”));---------绝对路径,2表示第二个div

           例:driver. findElement(By.xpath(“//span[@class=’bg s_ipt_wr’]/input));---------------------------相对路径,如果不想指定标签名也可以用星号代替

           例:driver. findElement(By.xpath(“//input[@maxlength=’100’]”))--------------------------------------相对路径,元素的任意属性都可以使用,只要它唯一标识。

           例:driver.findElement(By.xpath(“//input[@id=’kw’and @class=’su’]/span/input”));---------------相对路径,可使用路基运算符。

    7、通过元素的链接名称定位元素:driver. findElement(By.linkText( value)); 

                   8、通过元素的部分链接名称定位元素:driver. findElement(By.partialLinkText( value));

    二、元素操作

    (一)简单的元素操作

             1、元素操作

    • clear( ):清除文本,如果是一个文件输入框;
    • sendKends(value):在元素上模拟按键输入;
    • click( ):单击元素;有时候可与click互换使用,submit( )同样可以提交一个按钮。
    • submit( ):用于提交表单,特别用于没提交按钮的情况,如:输入关键字后点“回车”。

              2、获取元素信息

    • getSize( ):返回元素的尺寸
    • getAttribute( ):获得属性值
    • getTitle( ):获取当前页面的标题
    • getCurrentUrl( ):用户获取当前页面的URL
    • getText( ):用于获取元素的文本信息

              3、判断元素信息

    • isDisplayed( ):用于返回一个元素是否可见,可见返回true
    • isEnable():用于存储input、select等元素的可编辑状态,可以编辑返回true,否则返回false 
    • isSelected(  ):判断某个元素是否被选中。

    (二)鼠标事件

      WebDriver中提供了关于鼠标操作的方法:

      • contextClick( ):右击
      • clickAndHold( ):鼠标悬停
      • moveToElement( ):鼠标悬停
      • doubleClick( ):双击
      • release( ):释放鼠标
      • perform( ):执行所有Actions中存储的行为
      • dragAndDrop(value1,value2):将values1元素拖放到values2元素的位置

        例:  Actions action = new Actions(driver);

                 action.moveToElement(element).perform();

    (三)键盘事件

       使用键盘按键方法前需要先导入keys类。以下为常用的键盘操作:

    sendKeys(Keys.BACK_SPACE)     删除键(BackSpace)
    sendKeys(Keys.SPACE)              空格键(Space)
    sendKeys(Keys.TAB)                  制表键(Tab)
    sendKeys(Keys.ESCAPE)            回退键(Esc)
    sendKeys(Keys.ENTER)              回车键(Enter)
    sendKeys(Keys.CONTROL,'a')   全选(Ctrl+A)

    sendKeys(Keys.CONTROL,'c')   复制(Ctrl+C)
    sendKeys(Keys.CONTROL,'x')   剪切(Ctrl+X)
    sendKeys(Keys.CONTROL,'v')    粘贴(Ctrl+V)
    sendKeys(Keys.F1)                    键盘F1
    ……
    sendKeys(Keys.F12)                 键盘F12

    三、界面操作

      (一)控制浏览器

             1、控制浏览器的大小

      •   driver.manage( ).window( ).setSize(new Dimension(480,800));
      •    driver.manage().window().maximize();

              2、控制浏览器前进、后退、刷新

      • driver.navigate( ).back( );
      • driver.navigate( ).forward( );
      • driver.navigate().refresh();

      (二)界面切换

              1、通过id、name、xpath实现多表单切换:driver.switchTo( ).frame( ); 

                    例:  driver.switchTo( ).frame(“ if ”);  ---------------------------------------------------------------id = “if”

                             driver.switchTo( ).frame(“ nf ”); -------------------------------------------------------------name= “nf”                   

          •  WebElement  xf=driver.findElement(By.xpath(“//iframe[@id=’if’]”));
          • driver.switchTo( ).frame(xf);-------------------------------------------------------------通过xpath定位到iframe

               2、返回上一级表单: driver.swithTo().defaultContent(); 

               3、多窗口切换:driver.switchTo().window(handle);---------handle为句柄,通过driver.getWindowHandle()或driver.getWindowHandles()获得

               4、警告框处理:Alert alert = driver.switchTo().alert();            

        • accept(): 点击确认按钮
        • dismiss(): 点击取消按钮,如果有的话。
        • sendKeys(): 输入值,这个alert/confirm没有对话框就不能用了,不然会报错。

    四、其他

        1、操作cookies

      •  getCookies():获取所有的cookie信息
      •  addCookie(cookie_dict):  添加cookie,必须有name和value值
      •  deleteAllCookies(): 删除所有的cookie信息
      •  deleteCookieNamed(String  name): 删除name这个cookies
      •  getCookiesNamed(String  name): 返回特定name的cookie值

        2、调用JavaScript

    • JavascriptExecutor js = (JavascriptExecutor) driver;
    •  js.executeScript("JS脚本");

                      例:调用Javascript,操作滑动条;

        • ((JavascriptExecutor) driver).executeScript("window.scrollTo(0,document.body.scrollHeight)");
        •  ((JavascriptExecutor) driver).executeScript("window.scrollTo(0,1000)");

         3、时间等待

        • driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);      //识别元素时的超时时间
        • driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);  //页面加载时的超时时间
        • driver.manage().timeouts().setScriptTimeout(10, TimeUnit.SECONDS);  //异步脚本的超时时间

     

     

  • 相关阅读:
    Apache Spark 2.2.0 中文文档
    Apache Spark 2.2.0 中文文档
    Apache Storm 1.1.0 中文文档 | ApacheCN
    mysql生成随机字符串
    nginx的5个特点
    虚拟机网络配置
    (mapreduce题) 找出有共同好友的 users --好好玩
    activemq-5.15.10 启动不了
    mysql导出 Excel数据字典(全)
    WebStorm 免注册码
  • 原文地址:https://www.cnblogs.com/geqiandeqingmu/p/12702930.html
Copyright © 2011-2022 走看看