首页 > 编程语言 >java+selenium基础知识

java+selenium基础知识

时间:2023-01-12 16:46:06浏览次数:40  
标签:webDriver java 元素 selenium actions 基础知识 searchInputEle findElement sendKeys

----------
1.获取浏览器驱动:
---Chrome
System.setProperty("webdriver.chrome.driver","E:\\chromedriver\\newChrome\\chromedriver.exe");
WebDriver webDriver = new ChromeDriver();
---IE
System.setProperty("webdriver.ie.driver","xxx\\IEDriverServer.e");
WebDriver webDriver = new InternetExplorerDriver();
---FireFox
System.setProperty("webdriver.gecko.driver","xxx\\geckodriver.exe");
WebDriver webDriver = new FirefoxDriver();

----------
2.定位页面元素
webDriver.findElement(By.id("kw"));//通过元素的 id 属性值来定位元素
webDriver.findElement(By.className(""));//通过元素的 class 名来定位元素
webDriver.findElement(By.cssSelector(""));//通过css选择器来定位元素
webDriver.findElement(By.linkText(""));//通过元素标签对之间的文本信息来定位元素
webDriver.findElement(By.name(""));//通过元素的 name 属性值来定位元素
webDriver.findElement(By.partialLinkText(""));//通过元素标签对之间的部分文本信息来定位元素
webDriver.findElement(By.tagName(""));//通过元素的 tag 标签名来定位元素
webDriver.findElement(By.xpath(""));//通过xpath语法来定位元素
WebElement searchInputEle = webDriver.findElement(By.id("kw"));
WebElement searchButtonEle = webDriver.findElement(By.id("su"));
定位的元素用 WebElement对象接收;
如果需要用List接收,用findElements方法,如:
List<WebElement> list = webDriver.findElements(By.id("kw"));

----------
3.WebDriver常用API
webDriver.get(String url);//访问目标 url 地址,打开网页
String currenturl = webDriver.getCurrentUrl();//获取当前页面 url 地址
String pageSource = webDriver.getPageSource();//获取页面源代码
webDriver.close();//关闭浏览器当前打开的窗口
webDriver.quit();//关闭浏览器所有的窗口
String windowHan = webDriver.getWindowHandle();//获取当前窗口句柄

----------
4.WebElement常用API
webElement.click();//对元素进行点击
webElement.sendKeys("Kobe");//写入内容与模拟按键操作
Boolean isDisplay = webElement.isDisplayed();//元素是否可见(true:可见,false:不可见)
Boolean isEnable = webElement.isEnabled();//元素是否启用
Boolean isSelecte = webElement.isSelected();//元素是否已选择
String searchTag = webElement.getTagName();//获取元素标签名
String attrName = searchInputEle.getAttribute("name");//获取元素对应的属性值
String inputContent = searchInputEle.getText();//获取元素文本值(元素可见状态下才能获取到)
webElement.submit();//表单提交

-------------
5.元素等待机制

1)硬性等待
硬性等待就是不管你浏览器元素是否加载完成,都要进行等待设置好的时间,利用 java 语言中的线程类 Thread 中的 sleep 方法,进行强制等待。
Thread.sleep(3000);
一般不建议使用该方,我们无法判断网页到底需要多长时间加载完成,如果我们设置的时间过长,非常影响效率。

2)隐式等待
隐式等待的理解,就是我们通过代码设置一个等待时间,如果在这个等待时间内,网页加载完成后就执行下一步,否则一直等待到时间截止。
webDriver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
这种方法相对于硬性等待显的会灵活一点,但是隐式等待也有个弊端,因为这个设置是全局的,程序需要等待整个页面加载完成,直到超时,有时
候我需要找的那个元素早就加载完成了,只是页面上有个别其他元素加载比较慢,程序还是会一直等待下去。直到所有的元素加载完成在执行下一
步。这种方式了解就行,不推荐。

3)显式等待
显示等待是等待指定元素设置的等待时间,在设置时间内,默认每隔0.5s检测一次当前的页面这个元素是否存在,如果在规定的时间内找到了元素
则执行相关操作,如果超过设置时间检测不到则抛出异常。默认抛出异常为:NoSuchElementException。推荐使用显示等待。
WebDriverWait wait = new WebDriverWait(webDriver,5);
wait.until(ExpectedConditions.presenceOfElementLocated(By.id("kw")));//查找id为“kw"的元素是否加载出来了,在设定时间5s内找到后就返回,
超时直接抛异常

--------------
6.操作浏览器窗口
获取Window对象
window.maximize();//将浏览器窗口最大化
Dimension dimension = window.getSize();//获取窗口的尺寸对象
int height = dimension.getHeight();//获取高宽
int width = dimension.getWidth();//获取高宽
Point point = window.getPosition();//获取窗口的坐标对象
int pointX = point.getX();//x坐标
int pointY = point.getY();//y坐标
//设置窗口尺寸
int newHeight = height+100;
int newWidth = width+200;
Dimension newDimension = new Dimension(newHeight,newWidth);
window.setSize(newDimension);
//设置窗口坐标
int newX = pointX+100;
int newY = pointY+100;
Point newPoint = new Point(newX,newY);
window.setPosition(newPoint);

-------------
7.操作浏览器导航栏
WebDriver 提供了 Navigation 对象来对浏览器进行导航操作,如:前进、后退、刷新等
WebDriver.Navigation navigation = webDriver.navigate();//driver获取导航栏对象
String jumpUrl = "https://www.sina.com";
navigation.to(jumpUrl);//跳转新浪
navigation.refresh();//刷新页面
navigation.forward();//浏览器前进操作
navigation.back();//浏览器后退操作

--------------
8.模拟鼠标
在WebDriver中,关于鼠标的操作我们可以通过 Actions 类来模拟鼠标右击、双击、悬停、拖动等操作
Actions actions = new Actions(webDriver);//获取Actions对象
actions.moveToElement(searchButtonEle);//鼠标移动到指定元素
actions.click();//鼠标单击
actions.click(searchButtonEle);//鼠标单击指定元素
actions.contextClick();//鼠标右击
actions.contextClick(searchButtonEle);//鼠标右击指定元素
WebElement settingsEle = webDriver.findElement(By.linkText("设置"));
actions.clickAndHold(settingsEle);//点击并控制模拟悬停
actions.doubleClick(settingsEle);//鼠标双击元素
actions.dragAndDrop(searchButtonEle,searchInputEle);//鼠标拖拽动作,将searchButtonEle元素拖放到searchInputEle元素
actions.perform();//.perform()方法是动作执行的意思,每个动作方法必须再使用.perform()才能执行

--------------
9.模拟键盘
在 selenium 中有个 Keys() 类(枚举类),提供了几乎键盘上所有按键的方法,在使用的过程中,我们可以通过 sendKeys() 方法
来模拟键盘的输入,除此之外,我们还可以用它来输入键盘上的按键, 甚至是组合键, 如 Ctrl+A、 Ctrl+C 等
searchInputEle.sendKeys("Kobe Bryantt");//搜索框输入Kobe Bryant
searchInputEle.sendKeys(Keys.BACK_SPACE);//操作键盘的backspace键,删除掉最后的"t"
searchInputEle.sendKeys(Keys.SPACE);//输入空格
searchInputEle.sendKeys(Keys.ENTER);//回车
searchInputEle.sendKeys(Keys.DECIMAL,"a");//操作键盘全选
searchInputEle.sendKeys(Keys.CONTROL,"c");//操作键盘复制
searchInputEle.sendKeys(Keys.CONTROL,"v");//操作粘贴
searchInputEle.sendKeys(Keys.F1);//键盘F1

 

标签:webDriver,java,元素,selenium,actions,基础知识,searchInputEle,findElement,sendKeys
From: https://www.cnblogs.com/5gquanyi/p/17047044.html

相关文章