web自动化测试(java+seleium)元素定位,全屏截图

元素定位

示例

  System.setProperty("webdriver.gecko.driver", "");
  ChromeOptions chromeOptions = new ChromeOptions();
  chromeOptions.setHeadless(true);
  WebDriver driver = new ChromeDriver(chromeOptions);
  driver.get("https://www.baidu.com/");
  //TODO 进行定位
	......
  // 关闭浏览器
  driver.quit()

1、id定位

根据元素的id属性来定位元素

  //通过id定位
  driver.findElement(By.id("kw")).sendKeys("selenium如何定位元素");

2、name定位

根据元素的name属性来定位元素,但是注意name的属性值在当前文档中可以不是唯一的

	//通过name定位
   driver.findElement(By.name("wd")).sendKeys("selenium如何定位元素");

3、class_name定位

通过class定位

	//通过class定位
  driver.findElement(By.className("s_ipt")).sendKeys("selenium如何定位元素");

4、tag_name定位

通过tag进行定位,tag定位比较模糊,多用于标题等特殊标签

driver.findElement(By.tagName("h1"))

5、link_text定位

定位超链接文本(文本值)

driver.findElement(By.linkText("hao123"))

6、partial_link_text定位

模糊的link_text定位

driver.findElement(By.partialLinkText("hao"))

7、xpath定位

能够实现路径定位(绝对路径,相对路径);
可以利用路径+元素属性进行定位

 driver.findElement(By.xpath("//input[@id='kw']"))

8、css定位

采用css的方式定位元素

driver.findElement(By.cssSelector("#id名称"))

常用api(操作标签)

1、元素单击

.click()

2、表单提交

.submit()

3、在输入框中输入指定内容

Input.sendkeys();

4、在输入框中清除所有的文字内容

Input.clear();

5、获得文本值

.getText()

全屏截图

问题

当我们要进行全屏截图时,我们需要滑动浏览器右边的滚轮,但是滑动太快,便会造成页面并没有加载完毕,最终截出来的图为页面加载中的图。因此需要需要慢慢进行滑动加载。

代码实现

 /**
     * 重置窗口大小(调整至可以正常截图)
     *
     * @param driver 驱动对象
     */
    private void resetWindowSizeToScreenshot(WebDriver driver) throws InterruptedException {
        JavascriptExecutor javascriptExecutor = (JavascriptExecutor) driver;
        //最高高度
        int lastHeight = 0;
        int k = 1;
        while (true) {
            // 获取当前高度
            Object thisHeightObject = javascriptExecutor.executeScript("return document.body.scrollHeight;");
            int thisHeight = Integer.parseInt(String.valueOf(thisHeightObject));
            // 判断滑动后的高度lastHeight,与当前高度是否发生变化,如果没有变化,说明滑动到了最底部
            if (lastHeight != thisHeight) {
                String jsMove = String.format("window.scrollBy(0,%s)", k * 300);
                // 向下滑动
                javascriptExecutor.executeScript(jsMove);
                // 滑动后赋值
                lastHeight = thisHeight;
                sleep(1000);
                k++;
            } else {
                // 高度相同,跳出
                break;
            }
        }
        sleep(3 * 1000);
        driver.manage().window().setSize(new Dimension(1920, lastHeight + 300));
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值