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();