1.找到元素后,click没有作用,可以试试用action里的sendKeys模仿键盘敲enter键
(注意:1.enter之前可能需要tab;2.sendKeys之后需要perform)
例:
//点击数据中心类型下拉框
createObject.type.click();
//数据中心类型下拉框click点不到,用tab键和enter键代替(sendKeys之后要perform一下)
actions.sendKeys(Keys.TAB);
actions.perform(); actions.
sendKeys(Keys.ENTER);
actions.perform();
(另外,有时能点到,有时点不到,可能是页面不稳定,可以sleep一下试试)
2.获取某个元素不好获取时,可以获取他的子元素/父元素,然后获取对应元素
注意,`.`代表当前节点; '..'代表父节点
Webelement div= driver.findElement(By.xpath("//div[@id,'div']"));
通过xpath定位div的父元素:
WebElement input = div.findElement(By.xpath("./.."));
通过xpath定位div的子元素input(//表示从当前元素开始寻找下级、下下级、下下下级等):
WebElement input = div.findElement(By.xpath(".//input"));
3.获取元素进行点击等操作时,最好获取input等元素,有的元素是不可点击的,如span
4.获取到的元素是一组元素时,用获取多个元素的方法,获取到之后再get(i)来获取其中的某一个元素
5.清除输入框中的数据使用clear方法无效的时候,可以模拟键盘ctrl+A然后delete,具体操作如下updateObject.code.sendKeys(Keys.chord(Keys.CONTROL,"a"));
updateObject.code.sendKeys(Keys.DELETE);
6.如果在浏览器中新打开了一个页面,需要切换到新页面
//获取所有的打开的浏览器窗口 driver.getWindowHandles() 会返回一个set集合
Set winHandelsSet=driver.getWindowHandles();
// 将set集合存入list对象
List winHandels = new ArrayList(winHandelsSet);
//切换到新窗口
driver.switchTo().window(winHandels.get(1));
//切换到原来的窗口
driver.switchTo().window(winHandels.get(0));
顺便补充一个关闭tab窗口的方法
# 1.关闭浏览器全部标签页
driver.quit()
# 2.关闭当前标签页(从标签页A打开新的标签页B,关闭标签页A)
driver.close()
7.定位复合class元素
例如:一个日历选择控件,今天的日期class是:
解决方法:①如果这两个className中有一个是可以唯一确定这个元素,可以选择其中一个使用,如findElement(By.className("active");
②如果不能唯一确定,就先findElements,然后get(i);
8.元素在页面下方,需要滚动页面才能点到
参考 https://www.cnblogs.com/dk1024/p/11743889.html
本人测试,这个方法最好用
WebElement element = driver.findElement(By.id("ID")));
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView();", element);