热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

selenium–浏览器控制&元素操作

功能方法设置浏览器窗口大小 setSize()&maximize()控制浏览器前进 forward()控制浏览器后退 back()清除文本,如果是一个文件输入框clear()刷新当




























































功能方法
设置浏览器窗口大小 setSize() & maximize()
控制浏览器前进 forward()
控制浏览器后退 back()
清除文本,如果是一个文件输入框clear()
刷新当前页面refresh()
关闭当前窗口,只关闭单个窗口close()
退出相关的驱动程序和关闭所有窗口quit()
在元素上模拟按键输入sendKeys(*value)
单击元素click()
提交表单submit()
返回元素的尺寸getSize()
获得属性值getAttribute(name)
设置该元素是否用户可见isDisplayed()

 


1.设置浏览器大小-setSize() & maximize()

可以根据需求使用setSize()方法设置浏览器的窗口大小,也可以通过方法maximize()设置浏览器窗口全屏;

package com.test.selenium;
import org.openqa.selenium.By;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
/**
* 通过
* setSize()
* maximize()
* 方法设置浏览器窗口大小
*
*/
public class App
{
public static void main( String[] args ) throws InterruptedException
{
System.setProperty("webdriver.chrome.bin", "G:/chromedriver.exe");
WebDriver driver = new ChromeDriver();
//随机设置窗口大小
//driver.manage().window().setSize(new Dimension(500,800));
//设置全屏
driver.manage().window().maximize();
driver.get("http://www.baidu.com/");
Thread.sleep(5000);
driver.quit();
System.out.println( "执行结束" );
}
}

2.控制浏览器前进控制浏览器后退

测试的时候也会遇到打开两个浏览器窗口,遇到这种情况需要互相切换窗口就需要用到 forward()和 back()方法实现

package com.test.selenium;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
/**
* 通过
* back()
* forward()
* 方法设置浏览器窗口大小
*
*/
public class App
{
public static void main( String[] args ) throws InterruptedException
{
System.setProperty("webdriver.chrome.bin", "G:/chromedriver.exe");
WebDriver driver = new ChromeDriver();
//第一个页面
String firstUrl = "http://www.baidu.com/";
System.out.printf("访问百度:",firstUrl);
Thread.sleep(4000);
driver.get(firstUrl);

//第二个页面
String secOndUrl= "https://mail.qq.com/";
System.out.printf("访问qq邮箱:",secondUrl);
driver.get(secondUrl);
Thread.sleep(4000);

System.out.printf("退回第一个页面",firstUrl);
driver.navigate().back();
Thread.sleep(3000);

System.out.printf("前进到第二个页面",secondUrl);
driver.navigate().forward();
Thread.sleep(3000);
driver.quit();
System.out.println( "执行结束" );
}
}

3.清除文本,并在元素上模拟按键输入,点击提交

click()、clear()、 sendKeys()方法如何使用,接下来上代码:

package com.test.selenium;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
/**
*
* click()
* clear()
* sendKeys
*
*/
public class App
{
public static void main( String[] args ) throws InterruptedException
{
System.setProperty("webdriver.chrome.bin", "G:/chromedriver.exe");
WebDriver driver = new ChromeDriver();

String url = "https://mail.qq.com/";
System.out.printf("访问qq邮箱:",url);
driver.get(url);
Thread.sleep(4000);
driver.findElement(By.id("qqLoginTab")).click();
Thread.sleep(2000);
//有iframe结构,需要先进入到iframe里面去
driver.switchTo().frame("login_frame");
Thread.sleep(2000);
//点击
driver.findElement(By.id("switcher_plogin")).click();
Thread.sleep(2000);
//清楚文本
driver.findElement(By.id("u")).clear();
Thread.sleep(2000);
//输数信息
driver.findElement(By.id("u")).sendKeys("15453525111");
Thread.sleep(2000);
driver.findElement(By.id("p")).clear();
Thread.sleep(2000);
driver.findElement(By.id("p")).sendKeys("xxxxx");
Thread.sleep(2000);
driver.findElement(By.id("login_button")).click();
Thread.sleep(4000);
driver.quit();
System.out.println( "执行结束" );
}
}

6.提交表单--submit()

submit()方法用于提交表单,这里特别用于没提交按钮的情况,例如搜索框输入关键字之后的“回车”操作,对于这种情况就可以使用 submit()来实现提交搜索框的内容

package com.test.selenium;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
/**
*
* submit()
*
*/
public class App
{
public static void main( String[] args ) throws InterruptedException
{
System.setProperty("webdriver.chrome.bin", "G:/chromedriver.exe");
WebDriver driver = new ChromeDriver();

String url = "https://www.baidu.com/";
System.out.printf("访问百度:",url);
driver.get(url);
Thread.sleep(4000);

driver.findElement(By.id("kw")).sendKeys("博客园");
Thread.sleep(2000);
//通过click实现搜索
//driver.findElement(By.id("su")).click();
//通过submit实现提交功能
driver.findElement(By.id("su")).submit();
Thread.sleep(4000);
driver.quit();
System.out.println( "执行结束" );
}
}

7.获取元素相关属性

有的时候我们需要获取相关元素对应的一些属性,这里就总结常用的几种。

package com.test.selenium;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
/**
*getSize()
*getAttribute()
*isDisplayed()
*
*/
public class App
{
public static void main( String[] args ) throws InterruptedException
{
System.setProperty("webdriver.chrome.bin", "G:/chromedriver.exe");
WebDriver driver = new ChromeDriver();

String url = "https://www.baidu.com/";
System.out.printf("访问百度:",url);
driver.get(url);
Thread.sleep(4000);

WebElement eleme =driver.findElement(By.id("kw"));
Thread.sleep(1000);
//获得百度输入框的尺寸
System.out.print("获得元素得size:");
System.out.println(eleme.getSize());
//返回元素的属性值
System.out.print("获得元素得getAttribute:");
System.out.println(eleme.getAttribute("type"));
//返回元素的结果是否可见,返回结果为 True 或 False
System.out.print("元素是否可见:");
System.out.println(eleme.isDisplayed());
driver.quit();
System.out.println( "执行结束" );
}
}


推荐阅读
  • 本文详细探讨了在Windows 98环境下安装Apache 1.3.9、JServ、GNUJSP 1.0、JDK 1.2.2及JSDK 2.0后遇到的中文显示问题,并提供了多种有效的解决方案。 ... [详细]
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • Python网络编程:深入探讨TCP粘包问题及解决方案
    本文详细探讨了TCP协议下的粘包现象及其产生的原因,并提供了通过自定义报头解决粘包问题的具体实现方案。同时,对比了TCP与UDP协议在数据传输上的不同特性。 ... [详细]
  • 实现Win10与Linux服务器的SSH无密码登录
    本文介绍了如何在Windows 10环境下使用Git工具,通过配置SSH密钥对,实现与Linux服务器的无密码登录。主要步骤包括生成本地公钥、上传至服务器以及配置服务器端的信任关系。 ... [详细]
  • PHP中Smarty模板引擎自定义函数详解
    本文详细介绍了如何在PHP的Smarty模板引擎中自定义函数,并通过具体示例演示了这些函数的使用方法和应用场景。适合PHP后端开发者学习。 ... [详细]
  • 本文详细介绍了MySQL InnoDB存储引擎中的Redo Log和Undo Log,探讨了它们的工作原理、存储方式及其在事务处理中的关键作用。 ... [详细]
  • 汇编语言标识符和表达式(四)(表达式与符号定义语句)
    7、表达式表达式是程序设计课程里的一个重要的基本概念,它可由运算符、操作符、括号、常量和一些符号连在一起的式子。在汇编语言中,表达式分为:数值表达式和地址表达式。(1)进制伪指令R ... [详细]
  • HDFS数据读写流程详解
    本文详细解析了HDFS(Hadoop分布式文件系统)中的数据读写过程,包括从客户端发起请求到最终完成数据传输的每一个关键步骤。 ... [详细]
  • 本文介绍了如何使用 Python 的 Pyglet 库加载并显示图像。Pyglet 是一个用于开发图形用户界面应用的强大工具,特别适用于游戏和多媒体项目。 ... [详细]
  • Gradle 是 Android Studio 中默认的构建工具,了解其基本配置对于开发效率的提升至关重要。本文将详细介绍如何在 Gradle 中定义和使用共享变量,以确保项目的一致性和可维护性。 ... [详细]
  • 本文探讨了Linux环境下线程私有数据(Thread-Specific Data, TSD)的概念及其重要性,介绍了如何通过TSD技术避免多线程间全局变量冲突的问题,并提供了具体的实现方法和示例代码。 ... [详细]
  • C/C++ 应用程序的安装与卸载解决方案
    本文介绍了如何使用Inno Setup来创建C/C++应用程序的安装程序,包括自动检测并安装所需的运行库,确保应用能够顺利安装和卸载。 ... [详细]
  • 汇总了2023年7月7日最新的网络安全新闻和技术更新,包括最新的漏洞披露、工具发布及安全事件。 ... [详细]
  • 本文详细介绍了如何在 Windows 10 操作系统中安全地卸载 CUDA 9.0,同时避免影响 NVIDIA 图形驱动和其他相关组件。 ... [详细]
  • 本文详细介绍了如何配置Flutter开发环境,包括下载和解压Flutter SDK,设置环境变量,安装必要的Android工具和插件,以及启动模拟器进行测试。 ... [详细]
author-avatar
HikariFocus_695
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有