大鹏

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

1、第一个对浏览器的操作

WebDriver driver = new ChromeDriver();

drivr. ----对浏览器的操作

//配置驱动的方式和地址
System.setProperty("webdriver.chrome.driver", "E:\\javaselenium\\bao\\chromedriver.exe");
//实例化这个驱动
WebDriver driver = new ChromeDriver();
//浏览器获取地址
driver.get("http://www.baidu.com");

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

 


2、元素定位,再对元素的操作

WebElement ele2 = driver.findElement(By.partialLinkText("设置"));

ele2. -----先定位,后对元素的操作

 

 

 

Xpath定位: https://www.w3school.com.cn/xpath/xpath_functions.asp


3、模拟鼠标的操作
鼠标右击、双击、悬停、甚至是鼠标拖动等功能

WebDriver driver = new ChromeDriver();
Actions action = new Actions(driver);

action. ------模拟鼠标的操作

 

例子1:

WebElement ele1 = driver.findElement(By.xpath("//div[1]/div[1]/div[4]/span"));
action.moveToElement(ele1).perform();

 

 

 

Actions 类提供了鼠标操作的常用方法:

contextClick() 右击
clickAndHold() 鼠标点击并控制
doubleClick() 双击
dragAndDrop() 拖动
release() 释放鼠标
perform() 执行所有Actions中存储的行为


4、模拟键盘操作

import org.openqa.selenium.Keys;

Keys()类提供了键盘上几乎所有按键的方法

sendKeys()方法可以用来模拟键盘输入

WebElement input = driver.findElement(By.id("kw"));

input.sendKeys(Keys.BACK_SPACE);

 

在使用键盘按键方法前需要先导入 keys 类。

以下为常用的键盘操作:
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

 

 

5、Xpath定位,使用and 、or、| 等运算符

//WebElement ele1 = driver.findElement(By.xpath("//*[@id='login-email']"));
WebElement ele1 = driver.findElement(By.xpath("//input[@placeholder='手机号' and @name='email']")); //使用and,多元素定位
//WebElement ele1 = driver.findElement(By.xpath("//input[@placeholder='手机号' or @name='email']")); //使用or,多元素定位
//WebElement ele1 = driver.findElement(By.xpath("//input[@placeholder='手机号' | @name='email']")); //使用|,多元素定位

 

 

 

6、for循环,依次点击下拉框的元素

for(int i=0;i<8;i++){
WebElement ele4 =driver.findElement(By.xpath("//div[contains(@class,'c-select adv-ft-select')]/div[1]/i[1]"));
ele4.click();
Thread.sleep(2000);
System.out.println("点击下拉列表");

List<WebElement> ele5 = driver.findElements(By.xpath("//div[contains(@class,'c-select adv-ft-select')]/div[2]/div[2]/p"));
ele5.get(i).click();
Thread.sleep(3000);
System.out.println("点击"+i+"个选项");
System.out.println(ele5.get(i).getText());
}

 

7、定位一组元素

List<WebElement> ele4 = driver.findElements(By.xpath("//div[@class='search-setting']/ul/li[2]/span[2]/span"));
System.out.println(ele4.size());
for(int i=0;i<ele4.size();i++){
Thread.sleep(1000);
ele4.get(i).click();
System.out.println(ele4.get(i).getAttribute("class"));

}

System.out.println(driver.getTitle());
System.out.println(driver.getWindowHandle());
driver.quit();

 

8、QQ邮箱登陆。element包含在frame内,因此需要在查找元素前加入转到frame语句。这里普通的是定位不到的

System.setProperty("webdriver.chrome.driver", "E:\\javaselenium\\bao\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https://mail.qq.com/");
driver.manage().window().maximize();
Thread.sleep(3000);

WebElement frame=driver.findElement(By.id("login_frame")); // 添加frame元素
driver.switchTo().frame(frame);
//原因: 因为element包含在frame内,因此需要在查找元素前加入转到frame语句。这里普通的是定位不到的

WebElement ele6 = driver.findElement(By.xpath("//div[@class='web_login']/div[2]/form/div[1]/div/input"));
Thread.sleep(1000);
ele6.sendKeys("xxx");
System.out.println("输入QQ号");

WebElement ele7 = driver.findElement(By.xpath("//div[@class='web_login']/div[2]/form/div[2]/div[1]/input"));
Thread.sleep(1000);
ele7.sendKeys("xxx");
System.out.println("输入QQ密码");

WebElement ele8 = driver.findElement(By.xpath("//div[@class='web_login']/div[2]/form/div[4]/a/input"));
Thread.sleep(1000);
ele8.click();
System.out.println("点击登陆");


Thread.sleep(10000);

driver.quit();

 

posted on 2020-04-26 22:34  pf42280  阅读(180)  评论(0编辑  收藏  举报