selenium基础篇二

原文链接:https://blog.csdn.net/qq_22003641/article/details/79137327
原文链接:http://www.testclass.net
声明:本文是参考上面链接,尊重原创

WebElement 方法

1.模拟键盘操作–sendkeys() ,keys 类
在使用键盘按键方法前需要先导入 keys 类。

//引入Keys包
import org.openqa.selenium.Keys;


webDriver driver = new ChromeDriver
driver.get("https://www.baidu.com")
WebElement element = driver.findElement(By.id("kw"));
element.sendkeys("seleniumm");
//删除多输入的m
element.sendkeys(Keys.BACK_SPACE);

//输入空格键+“教程”
element.sendkeys(Keys.SPACE);
element.sendkeys("教程");

//ctrl+a 全选输入框内容
element.sendkeys(Keys.CONTROL,"a");

driver.quit();

以下为常用的键盘操作:
sendKeys(Keys.BACK_SPACE) 回格键(BackSpace)
sendKeys(Keys.SPACE) 空格键(Space)
sendKeys(Keys.TAB) 制表键(Tab)
sendKeys(Keys.ESCAPE) 回退键(Esc)
sendKeys(Keys.ENTER) 回车键(Enter)
sendKeys(Keys.CONTROL,‘a’) 全选(Ctrl+A)
sendKeys(Keys.CONTROL,‘c’) 复制(Ctrl+C)
sendKeys(Keys.CONTROL,‘x’) 剪切(Ctrl+X)
sendKeys(Keys.CONTROL,‘v’) 粘贴(Ctrl+V)
sendKeys(Keys.F1) 键盘 F1
……
sendKeys(Keys.F12) 键盘 F12

2.清除文本–clear()

driver.findElement(By.id("kw")).clear();

3.点击–click()

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

4.提交表单–submit()例如,在搜索框输入关键字之后的“回车” 操作, 就可以通过 submit()方法模拟.

driver.findElement(By.id("kw")).submit();

5.其他

  • getSiz()返回元素的尺寸
  • isDisplayed()设置该元素是否用户可见
  • getText()获取元素的文本
  • getAttribute(name)获取属性值
    getAttribute(name)与getText()的区别
<input class="acxiom-input span7 inline" type="text" id="confirm_email_to_download" style="font-size: 14px;" autocomplete="OFF" value="amy1111@xxx.com">
    
    //拿email的值"amy1111@xxx.com"
    
    driver.findElement(By.id("confirm_email_to_download")).getAttribute("value")
<span id="current-selection">Acxiom</span>

driver.findElement(By.cssSelector("span#current-selection")).getText()


6.模拟鼠标操作–Actions 类

  • contextClick()右击
  • clickAndHold()鼠标点击并控制
  • doubleClick()双击
  • dragAndDrop()拖动
  • release()释放鼠标
  • perform()执行所有actions中储存的操作
package test;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;

public class autoTest {

	public static void main(String[] args) {
		

	    WebDriver driver = new FirefoxDriver();	
		driver.get("http://baidu.com");
		WebElement saerch=driver.findElement(By.linkText("设置"));
		
	    Actions action = new Actions(driver);

		action.clickAndHold(saerch).perform();
	    driver.quit();

	}

}

导入提供鼠标操作的 ActionChains 类

  • Actions(driver) 调用Actions()类,将浏览器驱动driver作为参数传入、
  • clickAndHold() 方法用于模拟鼠标悬停操作, 在调用时需要指定元素定位。
  • perform() 执行所有ActionChains中存储的行为, 可以理解成是对整个操作的提交动作。

7.下拉框选择-Select类


<select id="nr" name="NR">
  <option value="10" selected>每页显示 10 条</option>
  <option value="20">每页显示 20 条</option>
  <option value="50">每页显示 50 条</option>

代码如下:
在这里插入图片描述

WebElement el = driver.findElement(By.xpath("//select"));
    Select sel = new Select(el);
    sel.selectByValue("20");
    Thread.sleep(2000);
 
    driver.quit();

8.弹出框–switchTo().alert()

  • getText(): 返回 alert/confirm/prompt 中的文字信息。
  • accept(): 接受现有警告框
  • dismiss(): 解散现有警告框
  • sendKeys(keysToSend): 发送文本至警告框
  • keysToSend: 将文本发送至警告框
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;

public class autoUi {
		public static void main(String[] args) {
		
		    WebDriver driver = new ChromeDriver();	
			driver.get("http://baidu.com");
			driver.findElement(By.linkText("设置")).click();
		    driver.findElement(By.linkText("搜索设置")).click();
		    
		    //保存设置
		    driver.findElement(By.className("prefpanelgo")).click();
		    
		    //接收弹窗
		    driver.switchTo().alert().accept();		    
		    driver.quit();
		}
}

9.文件上传–sendKeys()

	public static void main(String[] args) {
			

		    WebDriver driver = new ChromeDriver();	
			File file = new File("./upfile.html");
			
		    String filePath=	file.getAbsolutePath();
			driver.get(filePath);
			
		    driver.findElement(By.name("file")).sendKeys("D:\\upload_file.txt");
		    driver.quit();

		}

9.浏览器cookie操作–Cookie()

首先cookie是什么?
cookie是由服务端生成,发给User-Agent(一般指的是浏览器),浏览器会将cookie的key、value保存到耨个目录下的文本文件中,下次请求同一个网站时,就发送该cookie给服务器


import java.util.Set;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.Cookie;
 
 
public class CookieDemo {
 
  public static void main(String[] args){
 
    WebDriver driver = new ChromeDriver();
    driver.get("https://www.baidu.com");
 
    Cookie c1 = new Cookie("name", "key-aaaaaaa");
    Cookie c2 = new Cookie("value", "value-bbbbbb");
    driver.manage().addCookie(c1);
    driver.manage().addCookie(c2);
 
    //获得 cookie
    Set<Cookie> coo = driver.manage().getCookies();
    System.out.println(coo);
 
    //删除所有 cookie
    //driver.manage().deleteAllCookies();
 
    driver.quit();
  }

9.多表单切换–switchTo().frame()

  • 解决进入frame的方法
    iFrame有ID 或者 name的情况 driver.switchTo().frame(“frame_name or id or xpath”);

  • 跳出iFrame
    dr.switchTo().defaultContent();

    下图是126邮箱登录页,是一个frame
    在这里插入图片描述

public class autoUi {
		public static void main(String[] args) {
		
		    WebDriver driver = new ChromeDriver();	
			driver.get("https://mail.126.com/");
			
			//找到这个frame
			WebElement xf = driver.findElement(By.xpath("//*[@id='loginDiv']/iframe"));
			//跳到frame中
			driver.switchTo().frame(xf);
			driver.findElement(By.name("email")).clear();
		    driver.findElement(By.name("email")).sendKeys("username");
		    driver.findElement(By.name("password")).clear();
		    driver.findElement(By.name("password")).sendKeys("password");
		    driver.findElement(By.id("dologin")).click();
		    //跳出该frame
            driver.switchTo().defaultContent();
		}
}

10.多窗口切换–switchTo().Window();

在页面操作过程中有时候点击某个链接会弹出新的窗口, 这时就需要主机切换到新打开的窗口上进行操作。WebDriver提供了switchTo().window()方法可以实现在不同的窗口之间切换。

以百度首页和百度注册页为例,在两个窗口之间的切换

  • getWindowHandle(): 获得当前窗口句柄。
  • getWindowHandles(): 返回的所有窗口的句柄到当前会话。
  • switchTo().window(): 用于切换到相应的窗口

实现窗口切换的代码如下

import java.util.Set;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class MoreWindows {

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

    WebDriver driver = new ChromeDriver();
    driver.get("https://www.baidu.com");

    //获得当前窗口句柄
    String search_handle = driver.getWindowHandle();

    //打开百度注册窗口
    driver.findElement(By.linkText("登录")).click();
    Thread.sleep(3000);
    driver.findElement(By.linkText("立即注册")).click();

    //获得所有窗口句柄
    Set<String> handles = driver.getWindowHandles();

    //判断是否为注册窗口, 并操作注册窗口上的元素
    for(String handle : handles){
      if (handle.equals(search_handle)==false){
        //切换到注册页面
        driver.switchTo().window(handle);
        System.out.println("now register window!");
        Thread.sleep(2000);
        driver.findElement(By.name("userName")).clear();
        driver.findElement(By.name("userName")).sendKeys("user name");
        driver.findElement(By.name("phone")).clear();
        driver.findElement(By.name("phone")).sendKeys("phone number");
        //......
        Thread.sleep(2000);
        //关闭当前窗口
        driver.close();
      }
    }
    Thread.sleep(2000);

    driver.quit();
  }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值