Java-Selenium

Java-Selenium

1:环境

Maven环境

		<dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.12.0</version>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>RELEASE</version>
            <scope>compile</scope>
        </dependency>

2:八大定位方式

ID:

webDriver.findElement(By.id(""));

NAME:

webDriver.findElement(By.name(""));

XPATH:

webDriver.findElement(By.xpath("/html/body/form"));//绝对路径从html开始
webDriver.findElement(By.xpath("//form[@id="loginForm"]"));//相对路径
webDriver.findElement(By.xpath("//input[@name="continue"][@type="submit"]"));//通过属性和值

CLASSNAME:

webDriver.findElement(By.className(""));

CSS:

webDriver.findElement(By.cssSelector("input#kw"));//input的ID为kw  #表示ID
webDriver.findElement(By.cssSelector("input.kw"));//input的Class为kw .表示class

LINK:

webDriver.findElement(By.linkText(""));//精确定位
webDriver.findElement(By.partialLinkText(""));//模糊定位

TARNAME:

webDriver.findElements(By.tagName(""));

3:API操作

打开指定页面:

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

关闭:

webDriver.quit();
webDriver.close();

窗口最大化:

webDriver.manage().window().maximize();

获取URL:

webDriver.getCurrentUrl();

获取可见元素文本:

ele.getText()

获取隐藏元素文本:

ele.getAttribute("textContent");

获取属性值:

ele.getAttribute("");

重定向:

webDriver.navigate().to("http://news.baidu.com/");

后退/前进/刷新:

webDriver.navigate().back();
webDriver.navigate().forward();
webDriver.navigate().refresh();

清空文本:

ele.clear();

下拉框:

//创建Select对象
Select select=new Select(ele);
//获取方式1
select.selectByVisibleText("");
//获取方式2
select.selectByValue("");
//获取方式3
select.selectByIndex();

三种等待:

强制等待:由Java提供

Thread.sleep(3000);

隐式等待:作用于页面上所有元素,只设置一次,在规定时间内元素加载,直接执行,不再等待,如果超出等待时间,抛出异常

//页面加载数值和单位 如果未加载完成则抛出异常
Wait.webDriver.manage().timeouts().pageLoadTimeout(5, TimeUnit.SECONDS);
//隐式等待加载页面所有元素
Wait.webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);

显示等待:为某个特定的元素设置等待时间(例如登陆后进行断言)

//第一个参数为WebDriver对象,第二个参数为等待总时间单位为s,第三个参数为查看间隔时间单位为毫秒
WebDriverWait webDriverWait=new WebDriverWait(webDriver,5,1000);
        //显示等待获取元素的方式 new 接口的匿名子类重写apply方法
        WebElement webElement=webDriverWait.until(new ExpectedCondition<WebElement>() {
            @NullableDecl
            @Override
            public WebElement apply(@NullableDecl WebDriver webDriver) {
                return webDriver.findElement();
            }
        });

组合键:

//删除
kw.sendKeys(Keys.BACK_SPACE);
//空格
kw.sendKeys(Keys.SPACE);
//ctrl A
kw.sendKeys(Keys.CONTROL,"A");
//ctrl C
kw.sendKeys(Keys.CONTROL,"C");
//ctrl V
kw.sendKeys(Keys.CONTROL,"V");
//回车
kw.sendKeys(Keys.ENTER);

窗口切换:

//获取当前窗口句柄
String windowHandleOld = webDriver.getWindowHandle();
//获取所有窗口句柄
Set<String> windowHandles = webDriver.getWindowHandles();
//遍历句柄,如果切换后的url等于期望的则不在遍历,跳出循环
Iterator<String> iterator = windowHandles.iterator();
while (iterator.hasNext()){
	String next = iterator.next();
	webDriver.switchTo().window(next);
	Thread.sleep(1000);
	if("".equals(webDriver.getCurrentUrl())){
		break;
	}
}

iframe切换:

//通过iframe的webelement对象
WebElement ele = webDriver.findElement();
webDriver.switchTo().frame(ele);
//通过索引
webDriver.switchTo().frame();
//通过name或者Id
webDriver.switchTo().frame("");

//切换进主窗口
webDriver.switchTo().defaultContent();//返回最外面的窗口,主窗口
webDriver.switchTo().parentFrame();//返回上一级窗口

4:Junit5

1:所有用例前置方法

@BeforeAll
public static void beforeAll(){}

2:所有用例后置方法

@AfterAll
public static void afterAll(){}

3:各个用例前置方法

@BeforeEach
public void beforeEach(){}

4:各个用例后置方法

@AfterEach
public void afterEach(){}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值