selenium 使用教程详解-java版本 (7)

3.代码编写,这里需要注意下拉选是在一个iframe中,需要先切换到这个iframe后再操作。

// 创建驱动 WebDriver driver = new ChromeDriver(); // 打开2345网站 driver.get("https://www.2345.com"); // 切换城市 driver.findElement(By.linkText("切换")).click(); // 切换到iframe内联框架中 driver.switchTo().frame("city_set_ifr"); // 定位到省份下拉框 WebElement province = driver.findElement(By.id("province")); province.click(); // 创建Select对象 Select select = new Select(province); // 根据文本来获取下拉值 select.selectByVisibleText("B 北京"); driver.quit(); 7.5.带 readonly 属性的元素操作

​ 标签元素如果带有 readonly 属性,表示只读不能进行编辑,如果我们需要操作这样的元素,需要把这个 readonly 属性进行移除后,再进行操作。删除标签属性的话,webdriver 没有对应的 API,我们使用 JavaScript 脚本来进行操作。

示例:12306 网站购票页面日期。

selenium 使用教程详解-java版本

selenium 代码实现:

// 创建驱动 WebDriver driver = new ChromeDriver(); // 打开12306网站 driver.get("https://www.12306.cn/index/"); // 通过js来移除readonly属性 String removeAttr = "document.getElementById('train_date').removeAttribute('readonly');"; // 执行js ((JavascriptExecutor)driver).executeScript(removeAttr); // 获取日期日历输入框 WebElement train_date = driver.findElement(By.id("train_date")); // 清除原来的值 train_date.clear(); // 输入内容 train_date.sendKeys("2020-03-30"); driver.quit(); 7.6.日期控件操作

对于页面中出现时间控件选择时,一般分为两种:

(1)控件没有限制手动填写的,我们直接使用 sendKeys() 方法进行赋值即可。

driver.findElement(By).sendKeys("2020-03-30");

(2)控件限制了手动输入的,只能通过点击控件时间进行输入的,我们就需要使用 js 脚本进行操作了。

// 获取js执行器 JavaScriptExecutor js = (JavaScriptExecutor)driver; // 对时间输入框进入赋值 String script = "document.getElementById('xxx').value='2020-03-30';"; // 执行 js.executeScript(script);

注:需要注意的是,不管使用哪种方式进行时间的赋值,一点要注意输入时间的格式是否符合系统的要求;

7.7.文件上传

对于通过input标签实现的上传功能,可以将其看作是一个输入框,即通过sendKeys()指定本地文件路径的方式实现文件上传。

创建upfile.html文件,代码如下:

<html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <title>upload_file</title> <link href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css" /> </head> <body> <div> <div> <h3>upload_file</h3> <input type="file" /> </div> </div> </body> <script src="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.js"></scrip> </html>

接下来通过sendKeys()方法来实现文件上传。

import java.io.File; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class UpFileDemo { public static void main(String[] args) throws InterruptedException { WebDriver driver = new ChromeDriver(); File file = new File("./HTMLFile/upfile.html"); String filePath = file.getAbsolutePath(); driver.get(filePath); //定位上传按钮, 添加本地文件 driver.findElement(By.name("file")).sendKeys("D:\\upload_file.txt"); Thread.sleep(5000); driver.quit(); } }

注:sendKeys 参数为文件的绝对路径,并且上传的文件一点要存在,否则会抛异常。

第八章 控制浏览器操作 8.1.浏览器窗口操作

WebDriver 给我们提供了一个 Window 对象,专门用于对窗口的设置。

对象获取方法:

Window window = driver.manage().window();

Window 对象的方法有:

方法 描述
window.maximize()   将浏览器窗口最大化。  
window.getPosition()   获取窗口的位置,返回 Point 对象,包含浏览器左上角的坐标位置。通过point.x 和point.y 来获取到。  
window.setPosition(Point)   指定浏览器窗口左上角的坐标位置,创建一个Point 对象,设置对象的 x 和 y 坐标即可。  
window.getSize()   获取窗口尺寸(宽和高),返回一个 Dimension 对象,通过该对象调用 getHeight() 和 getWidth() 来获取 高度和宽度。  
window.setSize(Dimension)   设置窗口大小,创建一个 Dimension 对象,设置对象的高度和宽度。  
8.2.浏览器导航操作

WebDriver 提供了 Navigation 对象来对浏览器进行导航操作,如:前进、后退、刷新等。

Navigation 对象获取:

Navigation navigate = driver.navigate();

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyjgxg.html