• Selenium基础


    一、什么是selenium

    Selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可以用于任何支持JavaScript的浏览器上。

    selenium可以模拟真实浏览器,自动化测试工具,支持多种浏览器

    二、selenium webdriver定位元素的八种方式

    在使用selenium webdriver进行元素定位时,通常使用findElement或者findElements方法结合By类返回的元素句柄来定位元素。其中By类的常用定位方式有8种

    1、By.name()

    2、By.id()

    3、By.tagName  --通过元素的标签来查找元素,搜索到的元素通常不止一个,一般结合findElements方法使用

         例如: 

    WebDriver driver = new FirefoxDriver();

    driver.get("http://www.forexample.com");

    List<WebElement> buttons = driver.findElements(By.tagName("button"));

    4、By.className()  --通过元素的css样式表所引用的伪类名称来进行元素查找

    5、By.linkText()  --通过超文本链接的文字信息来定位元素

    6、By.partialLinkText()  --通过部分链接文字进行匹配

    7、By.xpath()

    注意:1、绝对路径以单/号表示,相对路径以//号表示  2、当xpath路径以/号开头时,表示让xpath解析引擎从文档的根节点开始解析;当xpath路径以//号开头时,表示让xpath解析引擎从文档的任意符合的元素节点开始解析

    例如:查找页面根元素:// 

    查找页面上的所有input元素://input

    查找页面上第一个form元素的直接子input元素://form[1]/input

    查找页面上id为loginForm的form元素://form[@id="loginForm"]

    查找页面上具有name属性为username的input元素://input[@name="username"]

    查找页面上具有name属性为continue并且type属性为button的input元素://input[@name="continue"][@type="button"]

    8、By.cssSelector()

    例如:定位id为first的div元素:#first  相当于xpath的  //div[@id=first]

    三、控制浏览器的操作

    1、WebDriver提供了manage().window().setSize()方法来设置浏览器大小

    maximize()设置浏览器最大化

    size()设置浏览器宽高

        WebDriver driver= new ChromeDriver();

        driver.get("https://www.baidu.cn");

        driver.manage().window().maximize();

        Thread.sleep(2000);

        driver.get("https://m.baidu.cn");

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

        Thread.sleep(2000);

    2、WebDriver提供了back()和forward()控制浏览器后退和前进

    back() 模拟浏览器的后退按钮

    forward()模拟浏览器的前进按钮

    3、刷新页面

    refresh() 刷新页面(F5)

    driver.navigate().refresh()

    四、WebDriver常用方法

    clear() 清除文本

    sendkeys(*value) 模拟按键输入

    click() 点击元素

    submit() 提交表单

    getSize() 返回元素的尺寸

    getText() 获取元素的文本

    getAttribute(name) 获得属性值  --返回元素的属性,可以是id、name、type或元素拥有的其他任意属性

    isDisplayed() 设置该元素是否可见

    五、模拟鼠标操作

    在WebDriver中,将关于鼠标操作的方法封装在ActionChains类提供

    contextClick() 右击

    clickAndHold() 鼠标点击并控制

    doubleClick() 双击

    dragAndDrop() 拖动

    release() 释放鼠标

    perform() 执行所有Actions中存储的行为

    WebDriver driver = new ChromeDriver();

    driver.get("https://www.baidu.com");

    WebElement search_setting = driver.findElement(BylinkText("设置"));

    Actions action = new Actions(driver);

    action.clickAndHold(search_setting).perform();

    org.openqa.selenium.interactions.Actions导入提供鼠标操作的ActionChains类

    Actions(driver)调用Actions()类,将浏览器驱动driver作为参数传入

    clickAndHold()方法用户模拟鼠标悬停操作,在调用时需要指定元素定位

    perform()执行所有ActionChains中存储的行为,可以理解成是对整个操作的提交动作

    六、模拟键盘操作

    Keys()类提供了键盘上所有按键的方法,sendkeys()方法可以用来模拟键盘输入,甚至是组合键

    WebElement input = driver.findElement(By.id("kw"));

    input.sendKeys(Keys.BACK_SPACE);

    input.sendKeys(Keys.SPACE);

    input.seneKeys(Keys.CONTROL,"v");

    input.seneKeys(Keys.ENTER);

    七、获取断言信息

    getTitle():获取当前页面的标题

    getCurrentUrl():获取当前页面的链接

    getText():获取当前页面的文本信息

    八、设置元素等待

    WebDriver提供了两种等待方法:显示等待和隐示等待

    显示等待:

    WebDriverWait(driver,10,1),driver:浏览器驱动,10:最长的等待时间,默认以秒为单位,1:检测的间隔时间

    隐示等待:

    implicitlyWait():识别对象时的超时时间

    pageLoadTimeOut():页面加载时的超时时间

    九、多窗口切换

    在页面操作过程中,有时点击某个链接会弹出新窗口,需要主机切换到新打开的窗口进行操作

    WebDriver提供了switchTo().window()方法可实现在不同窗口之间切换

    getWindowHandle():获得当前窗口句柄

    getWindowsHandles():返回所有窗口句柄到当前会话

    switchTo().windows():用于切换到不同窗口,例如driver.switchTo().windows(handle)

    十、窗口截图

    WebDriver提供了截图函数getScreenshotAs()来截取当前窗口

     十一、浏览器cookie操作

    WebDriver操作Cookie的方法

    getCookies():获得所有cookie的方法

    getCookiesNamed():返回字典的key为“name”的Cookie信息

    addCookie(cookie_dict):添加cookie,cookie_dict指字典对象,必须有name和value

    例如: Cookie  c=new Cookie("key","value");  driver.manage().addCookie(c);

    deleteCookieNamed(String name):删除cookie信息

    deleteAllCookies():删除所有的cookie信息

  • 相关阅读:
    SPOJ
    基础计算几何
    数颜色
    Codeforces 986B
    一些有趣的题
    jQuery
    linux命令学习
    javaScript
    css
    html
  • 原文地址:https://www.cnblogs.com/testerlina/p/10390800.html
Copyright © 2020-2023  润新知