首页 > 技术文章 > web自动化:Javascript操作页面元素

scarlettlie 2021-06-06 01:26 原文

某些特殊情况下,使用seleniumapi无法操作页面元素,可以通过js来完成

一.Js定位

js操作中的webelement通过console控制台来进行js定位:

WebElement webelement=document.getElementById(id);

二.元素无法输入

时间控件输入方法:

可点击时间控件下拉框选择(比较麻烦);

有些软件的时间控件标签为input,可直接输入,如果时间控件标签不是input

不可点击直接输入,可通过js来改变元素的源代码属性

设置/去除元素属性:setAttribute/removeAttribute

案例:12306的时间选择框

JavascriptExecutor javascriptExecutor=(JavascriptExecutor)webDriver;
//移除源代码内导致不可输入的属性
javascriptExecutor.executeScript("document.getElementById('train_date').removeAttribute('readonly')");
webDriver.findElement(By.id("train_date")).clear();    //清除原有元素
//清除了只读的属性后,元素就可以输入了
webDriver.findElement(By.id("train_date")).sendKeys("2021-5-14");

三.元素无法通过click点击

元素可被定位到,但是无法通过click点击,是由于点击事件被父元素消耗掉

WebElement webElement=webDriver.findElement(By.xpath("//span[text()='登录']"));
WebElement WebElement1=x;
JavascriptExecutor javascriptExecutor=(JavascriptExecutor) webDriver;
//js传参:把要点击的元素进行传参
javascriptExecutor.executeScript("arguments[1].click()",webElement1,webElement);

四.滚动条操作

滚动条案例:

JavascriptExecutor javascriptExecutor(JavascriptExecutor)webDriver;
//滚动到底部
javascriptExecutor.executeScript("window.scrollTo(0,document.body.scrollHeight);");
//js滚动滚动指定距离
javascriptExecutor.executeScript("window.scrollTo(0,800);");
//滚动到指定位置
javascriptExecutor.executeScript("webelement.scrollIntoViewIfNeeded(true);");

 

推荐阅读