1. 元素的定位
Selenium自动化,我们需要做的最基本的事情就是在页面找到元素,并通过脚本程序去操作这个元素,实现模拟人操作。我们有多种定位元素的方式可以选择:
通过元素的ID定位元素:
findElement(By.id(element));
通过元素的名称定位元素:
findElement(By.name(element));
通过元素的html中的位置定位元素:
findElement(By.xpath(element));
通过元素的标签名称定位元素:
findElement(By.tagName(element));
通过元素的链接名称定位元素:
findElement(By.linkText(element));
通过元素的类名定位元素:
findElement(By.className(element));
通过元素的css定位元素:
findElement(By.cssSelector(element));
通过元素的部分链接名称定位元素:
findElement(By.partialLinkText(element));
2. 元素的操作
不同的元素我们进行不同的操作,按钮的点击、输入框的字符输入、或者是元素的内容获取,不同的元素我们操作的方式不一。
对ID为element的元素进行点击操作:
driver.findElement(By.id(element)).click();
对ID为element的元素进行发送字符操作:
driver.findElement(By.id(element)).sendKeys(“XXXXXX”);
这是最简单的两例元素的操作,其实我们还有许多的操作,可以去慢慢的探索脚本的实现方式,比如页面title的获取、浏览器标签的切换等等
如图,“关于oppo”元素在一个鼠标悬浮菜单下面,直接定位元素是定位不到的,这里则需要几部操作才能定位到元素, 需要用到Selenium提供的一个强大的用于真实的模拟用户交互的一个类:Actions
Actions action = new Actions(driver);
Tools tool=new Tools();
boolean flag=true;
driver.get("http://www.oppo.com/cn/");
//鼠标悬浮在品牌导航标签上面 action.moveToElement(driver.findElement(By.xpath("html/body/header/div[2]/div/div[2]/nav/div/ul/li[3]/a/span[1]"))).perform();
tool.ms(1000); driver.findElement(By.xpath("html/body/header/div[2]/div/div[2]/nav/div/ul/li[3]/ul/li[1]/a")).click();
tool.ms(1000);
代码中的tool.ms(1000);其实是就是使用Thread.sleep(long millis); 使得当前线程休眠一1m,等待上一步骤响应完成。
Actions这个类提共了一系列的API供模拟交互:
keyDown : 用于模拟按键被按下
keyUp : 用于模拟按键松开
doubleClick : 用于模拟双击
clickAndHold : 用于模拟鼠标左键点住不放开
release : 用于模拟松开鼠标,与clickAndHold相配合
moveToElement : 将鼠标移动至元素的中间位置
contextClick : 模拟鼠标右键点击
dragAndDrop : 拖拽
3. 小结
元素操作的步骤:
步骤一: 确定元素的定位方式(调试更改)
步骤二: By element=(By.xpath(“XX/XX”));
步骤三: WebElement fdelement= driver.findElement(element);
步骤四: fdelement.click();