selenium打开新的页面_解析Selenium常用API接口

这篇博客详细介绍了Selenium Webdriver在浏览器操作方面的应用,包括打开、最大化和关闭浏览器,设置窗口大小,以及处理弹出的新窗口。同时,它涵盖了页面元素定位和操作,如输入框、下拉选择框、单选和复选按钮、按钮以及处理Alert对话框。此外,还讲解了文件上传和HTML5元素的操作。内容深入浅出,适合自动化测试初学者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2b6e778ea29b32d6bedcc2c90dd07f56.png

深圳川石信息

对浏览器操作

  1.1 用webdriver打开一个浏览器

//打开firefox浏览器:

WebDriver driver = new FirefoxDriver();

//打开IE浏览器

WebDriver driver = new InternetExplorerDriver ();

//打开HtmlUnit浏览器

WebDriverdriver = new HtmlUnitDriver();

//打开chrome浏览器

WebDriverdriver = new ChromeDriver();

  1.2 最大化浏览器&关闭浏览器

WebDriver driver = new FirefoxDriver();

driver.manage().window().maximize();

driver.close();

driver.quit();

  1.3 设置浏览器窗口大小

private static void SetWindowTest(WebDriver driver)

throws InterruptedException {

// 设置窗口的 宽度为:800,高度为600

Dimension d = new Dimension(800, 600);

driver.manage().window().setSize(d);

Thread.sleep(2000);

// 设置窗口最大化

driver.manage().window().maximize();

Thread.sleep(2000);

// 设置窗口出现在屏幕上的坐标

Point p = new Point(500, 300);

// 执行设置

driver.manage().window().setPosition(p);

Thread.sleep(2000);

}

  1.4 打开测试页面

打开测试页面

driver.get("http://www.baidu.com/");

driver.navigate().to("http://www.baidu.com/");

//navigate方法会产生1个Navigator对象,其封装了与导航相关的一些方法,比如前进后退等

1.5 处理浏览器弹出的新窗口

private static void MutiWindowTest(WebDriver driver)

throws InterruptedException {

WebDriver newWindow = null ;

driver.get("http://www.hao123.com/");

//浏览器最大化

driver.manage().window().maximize();

//获取当前页面句柄

String current_handles = driver.getWindowHandle();

//点击 百度链接

driver.findElement(By.xpath("//*[@data-]")).click();

//接下来会有新的窗口打开,获取所有窗口句柄

Set all_handles = driver.getWindowHandles();

//循环判断,把当前句柄从所有句柄中移除,剩下的就是你想要的新窗口

Iterator it = all_handles.iterator();

while(it.hasNext()){

if(current_handles == it.next()) continue;

//跳入新窗口,并获得新窗口的driver - newWindow

newWindow = driver.switchTo().window(it.next());

}

//接下来在新页面进行操作,也就是百度首页,我们输入一个java关键字进行搜索

Thread.sleep(5000);

WebElement baidu_keyowrd = newWindow.findElement(By.id("kw"));

baidu_keyowrd.sendKeys("java");

Thread.sleep(1000);

//关闭当前窗口,主要使用close而不是quite,

newWindow.close();

driver.switchTo().window(current_handles);

System.out.println(driver.getCurrentUrl());

}

页面元素定位

Webdriver提供下面两种方法来定位页面元素,参数是By对像,最常用是By.id和By.name查找。

findElement 定位某个元素,如果没有找到元素会抛出异常:NoSuchElementException

findElements 定位一组元素

例如需要定位如下元素:

//By.id

WebElement element = driver.findElement(By.id("passwd-id"));

//By.name

WebElement element = driver.findElement(By.name("passwd"));

//By.xpath

WebElement element =driver.findElement(By.xpath("//input[@id='passwd-id']"));

//By.className

WebElement element = driver.findElement(By.className("input_class"));

//By.cssSelector

WebElement element = driver.findElement(By.cssSelector(".input_class"));

//By.linkText

//通俗点就是精确查询

WebDriver driver = new FirefoxDriver();

driver.get("http://www.baidu.com/");

WebElement element = driver.findElement(By.linkText("百科"));

//By.partialLinkText:

//这个方法就是模糊查询

WebDriver driver = new FirefoxDriver();

driver.get("http://www.baidu.com/");

WebElement element = driver.findElement(By.partialLinkText("hao"));

//By.tagName

WebDriver driver = new FirefoxDriver();

driver.get("http://www.baidu.com/");

String test= driver.findElement(By.tagName("form")).getAttribute("name");

System.out.println(test);

如何对页面元素进行操作

  3.1 WebElement相关方法

  3.2 iFrame的处理

driver.switchTo().frame(“city_set_ifr”); //传入的是iframe的ID

dr.switchTo().defaultContent(); //如果要返回到以前的默认content

  3.3 输入框(text field or textarea)

WebElement element = driver.findElement(By.id("passwd-id"));

element.sendKeys(“test”);//在输入框中输入内容:

element.clear(); //将输入框清空

element.getText(); //获取输入框的文本内容:

  3.4 下拉选择框(Select)

Select select = new Select(driver.findElement(By.id("select")));

select.selectByVisibleText(“A”);

select.selectByValue(“1”);

select.deselectAll();

select.deselectByValue(“1”);

select.deselectByVisibleText(“A”);

select.getAllSelectedOptions();

select.getFirstSelectedOption();

示例:

package seleniumAPIDemo;

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.firefox.FirefoxDriver;

import org.openqa.selenium.support.ui.Select;

public class SelectDemo {

public static void main(String[] args) throws InterruptedException {

WebDriver driver = new FirefoxDriver();

iframeAndSelectTest(driver);

driver.quit();

}

private static void iframeAndSelectTest(WebDriver driver)

throws InterruptedException {

driver.get("http://www.2345.com/");

//浏览器最大化

driver.manage().window().maximize();

//点击切换按钮

driver.findElement(By.id("J_city_switch")).click();

//进入天气城市选择iframe

driver.switchTo().frame("city_set_ifr");

Thread.sleep(2000);

//然后在进行选择城市

//定位 省下拉框

Select province = new Select(driver.findElement(By.id("province")));

province.selectByValue("20");

Thread.sleep(2000);

//定位 城市下拉框

Select city = new Select(driver.findElement(By.id("chengs")));

city.selectByIndex(0);

Thread.sleep(2000);

//定位区

Select region = new Select(driver.findElement(By.id("cityqx")));

region.selectByVisibleText("X 新密");

Thread.sleep(2000);

//点击定制按钮

driver.findElement(By.id("buttonsdm")).click();

Thread.sleep(2000);

//返回默认的content

driver.switchTo().defaultContent();

}

}

3.5 单选项(Radio Button)

WebElement radio=driver.findElement(By.id("BookMode"));

radio.click(); //选择某个单选项

radio.clear(); //清空某个单选项

radio.isSelected(); //判断某个单选项是否已经被选择

3.6 多选项(checkbox)

WebElement checkbox = driver.findElement(By.id("myCheckbox."));

checkbox.click();

checkbox.clear();

checkbox.isSelected();

checkbox.isEnabled();

3.7 按钮(button)

WebElement btn= driver.findElement(By.id("save"));

btn.click(); //点击按钮

btn.isEnabled (); //判断按钮是否enable

  3.8 处理Alert

弹出对话框(Popup dialogs)

Alert alert = driver.switchTo().alert();

alert.accept(); //确定

alert.dismiss(); //取消

alert.getText(); //获取文本

示例:

private static void alertTest(WebDriver driver) throws InterruptedException {

driver.get("http://www.w3school.com.cn/tiy/t.asp?f=hdom_alert");

//浏览器最大化

driver.manage().window().maximize();

//进入frame

driver.switchTo().frame("i");

//找到按钮并点击按钮

driver.findElement(By.xpath("//*[@value='显示消息框']")).click();

Thread.sleep(2000);

//获取Alert

Alert a = driver.switchTo().alert();

//打印出文本内容

System.out.println(a.getText());

//点击确定

Thread.sleep(2000);

a.accept();

// 如果alert上有取消按钮,可以使用a.dismiss()代码

}

  3.9 上传文件

3.9.1 元素标签是Input时上传方式

Upload.html文件内容如下:

代码如下:

private static void uploadTest1(WebDriver driver) throws InterruptedException {

//打开上传的网页 - get中输入upload的地址

driver.get("D:DownLoad甥汰慯dTest甥汰慯d.html");

WebElement e1 = driver.findElement(By.id("fileControl"));

Thread.sleep(2000);

//输入要上传文件的地址

e1.sendKeys("D:DownLoad甥汰慯dTest被上传的文件.txt");

Thread.sleep(2000);

}

  3.9.2 通过操作桌面浏览窗口上传

示例2 上传文件

3.10 Selenium处理HTML5

3.10.1 处理Vedio

这就需要了解html5中vedio的相关方法了,可以参考http://www.w3school.com.cn/tags/html_ref_audio_video_dom.asp

private static void html5VedioTest(WebDriver driver)

throws InterruptedException {

driver.get("http://videojs.com/");

Thread.sleep(2000);

//找到vedio元素

WebElement vedio = driver.findElement(By.id("preview-player_html5_api"));

//声明js执行器

JavascriptExecutor js = (JavascriptExecutor) driver;

//对vedio这个元素执行播放操作

js.executeScript("arguments[0].play()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值