美文网首页
特殊元素定位和操作(四)

特殊元素定位和操作(四)

作者: testerPM | 来源:发表于2020-01-20 14:47 被阅读0次

--------------------------------------鼠标键盘事件:-----------------------
自动化测试时,有些元素不适合直接点击或者进行某些操作时,可以使用Selenium的Actions类来模拟鼠标键盘操作,通过Actions对象可以发起鼠标左键,右键,移动鼠标等操作,最后使用perform方法执行操作。
案例:百度首页
Actions: 在操作一个页面元素的时候需要一连串的动作配合的时候,可以使用Actions来完成
案例:http://www.treejs.cn/v3/demo/cn/exedit/drag.html

要移动一个二级菜单的位置,这个动作涉及到的几个动作:选择菜单->点击左键不松开->移动到某个地方->释放鼠标 组合这一套动作:
actions.clickAndHold(onElement).moveToElement(toElement).release().build().perform();
注意:并不是所有的操作都适合用Actions鼠键操作来完成,有些情况下使用一套鼠键操作反而会复杂化一个普通操作

常用Api:

        //new 一个执行鼠标事件的实例化对象
    Actions actions=new Actions(driver);
    //将元素拖拽到某个元素的位置:source:源 元素  target:目标元素位置
    actions.dragAndDrop(source, target)
    //鼠标双击
    actions.doubleClick();
       //鼠标右击
    actions.contextClick();
            //将鼠标移动到指定的元素上
    actions.moveToElement(target);

示例演示:


               openBrowser("chrome");
        driver.get("http://www.treejs.cn/v3/demo/cn/exedit/drag.html");
        // 刷新当前打开的浏览器页面
        driver.navigate().refresh();
        // new 一个执行鼠标事件的实例化对象
        Actions actions = new Actions(driver);
        // 找到要拖拽的元素--源
        WebElement element = driver.findElement(By.id("treeDemo_2_span"));
        // 找到要推拽到哪里的元素
        WebElement findElement = driver.findElement(By.id("treeDemo_3_span"));
        // 鼠标长按将 element 拖拽到findElement位置 ,然后释放鼠标
        // release()释放鼠标
        // build()构建一连串的动作
        // perform()使一连串的动作生效
        actions.clickAndHold(element).moveToElement(findElement).release().build().perform();


------------------------------文件上传---------------------------------------

文件上传是自动化中比较麻烦的部分
第一种情况:

   <input type="file" id="fu" value="选择文件">

因为上传文件会需要打开windows的文件选择窗口,而selenium
是无法操作这个窗口的
解决办法: 使用sendKeys写入文件的路径
第二种情况:
如果文件上传不是input元素,而是使用的第三方的控件。需要使用第三方的
工具,比如autoit等来完成



                openBrowser("chrome");
        driver.get("G:\\xxxx\\xxx\\xxx\\xxxx\\xxxx\\xxxx\\xxxx\\fileupload.html");
          driver.findElement(By.id("fu")).sendKeys("C:\\Users\\TF\\Desktop\\新建文本文档.txt");


---------------------------------验证码-------------------------

(1)去除 验证码
(2)自动识别----通过第三方工具进行图像识别,比如打码平台
不推荐----需要学习很多知识
(3)使用万能验证码----开发提供

前程贷万能验证码:hapi

前程贷后台地址:http://120.78.128.25:8765/Admin/Index/login.html
lemon7/lemonbest

前程贷前台地址:http://120.78.128.25:8765/Index/login.html
13323234545/lemon123456

示例:

        openBrowser("chrome");
       driver.get("http://120.78.128.25:8765/Admin/Index/login.html");
       driver.findElement(By.xpath("//input[@name=\"admin_name\"]")).sendKeys("lemon7");
       driver.findElement(By.xpath("//input[@name=\"admin_pwd\"]")).sendKeys("lemonbest");
       driver.findElement(By.xpath("//input[@name=\"code\"]")).sendKeys("hapi");
       driver.findElement(By.xpath("//button[text()=\"登陆后台\"]")).click();


相关文章

网友评论

      本文标题:特殊元素定位和操作(四)

      本文链接:https://www.haomeiwen.com/subject/rvujzctx.html