----------------------------------------元素WebElement常见API---------------------------------------
(1)click()
触发当前元素的点击事件
(2)clear()
清空内容
openBrowser("chrome");
driver.get("http://www.baidu.com");
// 定位到input框输入关键字
driver.findElement(By.id("kw")).sendKeys("腾讯课堂");
// 线程等待3秒(由于代码执行速度快)
Thread.sleep(3000);
driver.findElement(By.id("kw")).clear();
(3)sendKeys()
往文本框一类元素中写入内容
element.sendKeys("腾讯课堂");//输入内容 腾讯课堂
按键操作
element.sendKeys(Keys.CONTROL,"a");//ctrl+a 全选
element.sendKeys(Keys.CONTROL,"x");//ctrl+x 剪切
element.sendKeys(Keys.CONTROL,"c");//ctrl+c 复制
element.sendKeys(Keys.CONTROL,"v");//ctrl+v 粘贴
element.sendKeys(Keys.ENTER);// 回车
element.sendKeys(Keys.BACK_SPACE);// 空格
openBrowser("chrome");
driver.get("http://www.baidu.com");
// 定位到input框
WebElement element = driver.findElement(By.id("kw"));
// 输入关键字
element.sendKeys("腾讯课堂");
// 线程等待3秒(由于代码执行速度快)
Thread.sleep(3000);
// 全选
element.sendKeys(Keys.CONTROL, "a");
Thread.sleep(2000);
// 剪切
//element.sendKeys(Keys.CONTROL, "x");
//复制
element.sendKeys(Keys.CONTROL,"c");
Thread.sleep(2000);
// 粘贴
element.sendKeys(Keys.CONTROL, "v");
element.sendKeys(Keys.CONTROL, "v");//Keys.CONTROL,这里的Keys是枚举类型
(4)getTagName()
获取元素的标签名
(5)getAttribute(属性名)
根据属性名获取元素属性值
(6) getText()
获取当前元素的文本值
(7)isDisplayed()
查看元素是否显示
(8)submit
提交表单
openBrowser("chrome");
driver.get("http://www.baidu.com");
// 定位到input框
WebElement element = driver.findElement(By.id("kw"));
// 输入关键字
element.sendKeys("腾讯课堂");
// 线程等待3秒(由于代码执行速度快)
Thread.sleep(3000);
// 获取 element 元素的标签名
System.out.println(" 元素的标签名 : " + element.getTagName());
// 根据的元素的属性名获取属性值
System.out.println("class属性的属性值:" + element.getAttribute("class"));// 获取input标签的class属性的属性值
// 获取input标签的文本值
System.out.println("标签的文本值:" + element.getText());// input 这里是没有文本值的
// 查看元素是否显示出来----肉眼可见
System.out.println("元素是否显示: " + element.isDisplayed());
// 退出浏览器
driver.quit();
上面代码执行结果:
class属性的属性值:s_ipt
标签的文本值:
元素是否显示: true
(7)isDisplayed()----查看元素是否显示---特别举例说明
以百度首页---设置----高级搜索为例
打开百度首页,当前html找不到 高级搜索(不存在)------------------------------------------元素WebElement常见API---------------------------------------
(1)click()
触发当前元素的点击事件
(2)clear()
清空内容
openBrowser("chrome");
driver.get("http://www.baidu.com");
// 定位到input框输入关键字
driver.findElement(By.id("kw")).sendKeys("腾讯课堂");
// 线程等待3秒(由于代码执行速度快)
Thread.sleep(3000);
driver.findElement(By.id("kw")).clear();
(3)sendKeys()
往文本框一类元素中写入内容
element.sendKeys("腾讯课堂");//输入内容 腾讯课堂
按键操作
element.sendKeys(Keys.CONTROL,"a");//ctrl+a 全选
element.sendKeys(Keys.CONTROL,"x");//ctrl+x 剪切
element.sendKeys(Keys.CONTROL,"c");//ctrl+c 复制
element.sendKeys(Keys.CONTROL,"v");//ctrl+v 粘贴
element.sendKeys(Keys.ENTER);// 回车
element.sendKeys(Keys.BACK_SPACE);// 空格
openBrowser("chrome");
driver.get("http://www.baidu.com");
// 定位到input框
WebElement element = driver.findElement(By.id("kw"));
// 输入关键字
element.sendKeys("腾讯课堂");
// 线程等待3秒(由于代码执行速度快)
Thread.sleep(3000);
// 全选
element.sendKeys(Keys.CONTROL, "a");
Thread.sleep(2000);
// 剪切
//element.sendKeys(Keys.CONTROL, "x");
//复制
element.sendKeys(Keys.CONTROL,"c");
Thread.sleep(2000);
// 粘贴
element.sendKeys(Keys.CONTROL, "v");
element.sendKeys(Keys.CONTROL, "v");//Keys.CONTROL,这里的Keys是枚举类型
(4)getTagName()
获取元素的标签名
(5)getAttribute(属性名)
根据属性名获取元素属性值
(6) getText()
获取当前元素的文本值
(7)isDisplayed()
查看元素是否显示
(8)submit
提交表单
openBrowser("chrome");
driver.get("http://www.baidu.com");
// 定位到input框
WebElement element = driver.findElement(By.id("kw"));
// 输入关键字
element.sendKeys("腾讯课堂");
// 线程等待3秒(由于代码执行速度快)
Thread.sleep(3000);
// 获取 element 元素的标签名
System.out.println(" 元素的标签名 : " + element.getTagName());
// 根据的元素的属性名获取属性值
System.out.println("class属性的属性值:" + element.getAttribute("class"));// 获取input标签的class属性的属性值
// 获取input标签的文本值
System.out.println("标签的文本值:" + element.getText());// input 这里是没有文本值的
// 查看元素是否显示出来----肉眼可见
System.out.println("元素是否显示: " + element.isDisplayed());
// 退出浏览器
driver.quit();
上面代码执行结果:
class属性的属性值:s_ipt
标签的文本值:
元素是否显示: true
(7)isDisplayed()----查看元素是否显示---特别举例说明
以百度首页---设置----高级搜索为例
打开百度首页,当前html找不到 高级搜索(不存在)----当鼠标放到 设置上,再f12,可以定位到 高级搜索
openBrowser("chrome");
driver.get("http://www.baidu.com");
// 使用 xpath进行元素 定位 //a[text()="高级搜索"]
// WebElement element = driver.findElement(By.xpath("//a[text()=\"高级搜索\"]"));
// 使用超链接文本定位
WebElement element = driver.findElement(By.linkText("高级搜索"));
// 查看元素是否显示出来----肉眼可见
System.out.println("元素是否显示: " + element.isDisplayed());
// 退出浏览器
driver.quit();
上面代码执行结果:
Exception in thread "main" org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"link text","selector":"高级搜索"}
元素定位不到常见原因:
1 定位表达式错误
2 元素没有加载出来
3 元素被隐藏(不存在当前的html中)---需要通过鼠标悬停事件才可以显示
我们这里的原因是:元素被隐藏
-------------------------------------------------解决办法如下---------------------------------------
openBrowser("chrome");
driver.get("http://www.baidu.com");
// 找到设置并点击
driver.findElement(By.xpath("//div[@id=\"u1\"]//a[text()=\"设置\"]")).click();
// 使用 xpath进行元素 定位 //a[text()="高级搜索"]
// WebElement element = driver.findElement(By.xpath("//a[text()=\"高级搜索\"]"));
// 使用超链接文本定位
// 默认打开百度,高级搜索默认没有被渲染在当前html中,所以找不到元素
WebElement element = driver.findElement(By.linkText("高级搜索"));
// 查看元素是否显示出来----肉眼可见
System.out.println("元素是否显示: " + element.isDisplayed());
// 退出浏览器
driver.quit();
这里需要注意的是:driver.findElement(By.linkText("高级搜索"));超文本连接定位可能会不太稳定,有时候能定位到有时候不能定位到,如果定位不到,就换一种定位方式如上面的xpath
-------------------------------------------submit提交表单--------------------------------------------
openBrowser("chrome");
driver.get("http://120.78.128.25:8765/index/login.html");
// 输入手机号
driver.findElement(By.xpath("//input[@name=\"phone\"]")).sendKeys("13333333333");
// 输入密码
driver.findElement(By.xpath("//input[@name=\"password\"]")).sendKeys("1234567");
// 点击 登录
// driver.findElement(By.xpath("//button[contains(@class,\"btn\")]")).click();
// 提交表单
driver.findElement(By.xpath("//form[@name=\"login-form\"]")).submit();
Thread.sleep(3000);
// 退出浏览器
driver.quit();
一般都是通过点击,不是很常用submit
网友评论