WebDriver高级应用
public class Demo4 { WebDriver driver; // @BeforeMethod:在每个测试方法开始运行前执行 @BeforeMethod public void beforeMethod(){ System.setProperty("webdriver.chrome.driver", "e:\\chromedriver.exe"); driver = new ChromeDriver(); } // @AfterMethod:在每个测试方法开始运行结束后执行 @AfterMethod public void afterMethod(){ driver.close(); } /** * 使用JavaScriptExecutoru单击元素 */ @Test public void testDame(){ driver.get("http://www.baidu.com"); //找到百度首页的搜索输入框 WebElement searchInbox = driver.findElement(By.id("kw")); //找到搜索按 WebElement searchButton = driver.findElement(By.id("su")); //在输入框中输入字符 searchInbox.sendKeys("selenium"); //调用javaScriptClick方法单击按钮 javaScriptClick(searchButton); } public void javaScriptClick(WebElement element){ try { //判断传入的element元素是否为可单击状态,是否可见 if(element.isEnabled() && element.isDisplayed()){ System.out.println("使用javascript进行页面元素的单击"); ((JavascriptExecutor) driver).executeScript("arguments[0].click();",element); }else { System.out.println("页面上的元素无法进行单击操作"); } } catch (NoSuchElementException e1) { System.out.println("页面元素没有附加在网页中"); e1.printStackTrace(); } catch (Exception e2) { System.out.println("无法完成单击操作"); e2.printStackTrace(); } } /** * 在Ajax方式产生的浮动框中,选择单击包含某些关键字的选项 * @throws InterruptedException */ @Test public void testAjaxDemo() throws InterruptedException{ driver.get("https://www.sogou.com"); //找到搜索框 WebElement searthInbox = driver.findElement(By.id("query")); searthInbox.click(); Thread.sleep(2000); //将浮动的列表选项存list集合中 List<WebElement> webElements = driver.findElements(By.xpath("//*[@id='vl']/div[1]/ul/li")); for(WebElement webElement : webElements){ //判断是否包含关键字 if(webElement.getText().contains("5月新规")){ System.out.println("............. "+ webElement.getText()); webElement.click(); Thread.sleep(3000); } } } //设置一个页面对象的属性值 @Test public void testDemo() throws InterruptedException{ driver.get("file:///F:/workspace/selenium_demo/src/main/webapp/text.html"); //获取到id为text的元素对象 WebElement textElement = driver.findElement(By.id("text_test")); //调用setAttribute方法修改文本框的value属性值,改变文本框中的文字 setAttribute(driver,textElement,"value","selenium"); //修改文本框的size属性值 setAttribute(driver, textElement, "size", "5"); Thread.sleep(2000); //删除文本框的size属性值 removeAttribute(driver, textElement, "size"); Thread.sleep(3000); } //修改页面元素属性的方法 private void setAttribute(WebDriver driver, WebElement textElement, String attributeName, String value) { JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("arguments[0].setAttribute(arguments[1],arguments[2])", textElement,attributeName,value); } //删除页面元素属性的方法 private void removeAttribute(WebDriver driver, WebElement textElement, String attributeName) { JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("arguments[0].removeAttribute(arguments[1])",textElement,attributeName); } /** * 在日期选择器上进行日期选择 */ @Test public void datepickerTest(){ driver.get("file:///F:/workspace/selenium_demo/src/main/webapp/text.html"); //获取到日期控制元素对象 WebElement datepicker = driver.findElement(By.xpath("//*[@id='d12']")); //datepicker.click(); datepicker.sendKeys("2019-04-29"); try { Thread.sleep(3000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 高亮显示正在被操作的页面元素 */ @Test public void highLightTest(){ driver.get("http://www.baidu.com"); WebElement searchInbox = driver.findElement(By.id("kw")); WebElement submitButton = driver.findElement(By.id("su")); //调用高亮处理方法 highLightElenment(searchInbox); searchInbox.sendKeys("selenium"); highLightElenment(submitButton); submitButton.click(); try { Thread.sleep(3000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //高亮处理元素对象 private void highLightElenment(WebElement element) { JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("arguments[0].setAttribute('style',arguments[1])", element,"background:yellow;solid:red;"); } /** * 用例执行失败对屏幕进行截屏 */ public void screenTest(){ } }
/** * 自动下载文件 * @author Administrator * */ public class DownloadFiles { //指定文件下载地址 static String downloadFilePath = "D:/download"; WebDriver driver; JavascriptExecutor js; String url; @BeforeMethod public void beforeMethod(){ url = "http://ftp.mozilla.org/pub/firefox/releases/35.0b8/win32/zh-CN/"; } /* @AfterMethod public void afterMethod(){ driver.quit(); }*/ @Test public void download(){ ChromeOptions options = downloadChromeFile();//更改默认下载路径 driver = new ChromeDriver(options); driver.get(url); driver.findElement(By.partialLinkText("Stub")).click(); try { Thread.sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); } } public static ChromeOptions downloadChromeFile(){ ChromeOptions options = new ChromeOptions(); //指定下载路径 Map<String, Object> map = new HashMap<String, Object>(); map.put("profile.default_content_settings.popups", 0); map.put("download.default_directory", downloadFilePath); options.setExperimentalOption("prefs", map); return options; } }
public class Upload { @Test public void test(){ System.setProperty("webdriver.chrome.driver", "e:\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get("file:///F:/workspace/selenium_demo/src/main/webapp/upload.html"); driver.findElement(By.name("uploadFile")).sendKeys("C:\\Users\\Administrator\\Desktop\\IDEA快捷键.txt"); } }
/** * 滑动滚动条到屏幕中间 * 滑动滚动条到指定元素位置 * 按横纵坐票滑动屏幕 * @author Administrator * */ public class ScrollBar { WebDriver driver; String url; @BeforeMethod public void beforeMethod(){ url="http://v.sogou.com"; System.setProperty("webdriver.chrome.driver", "e:\\chromedriver.exe"); driver = new ChromeDriver(); driver.get(url); } @AfterMethod public void afterMethod(){ driver.quit(); } //第一优先级执行测试用例 @Test(priority=1) public void scrollBarToPage(){ //将页面的滚动条滑动到屏幕的最下方 ((JavascriptExecutor) driver).executeScript("window.scrollTo(0, document.body.scrollHeight)"); try { Thread.sleep(3000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //第二优先级执行测试用例 @Test(priority=2) public void scrollBarToElemneTOfoPage(){ //将页面的滚动条滑动到页面指定的元素位置 ... 电视剧栏位置 WebElement element = driver.findElement(By.xpath("//*[@id='container']/div[2]/div[2]/div[2]/div[1]/h3/a")); ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView();", element); try { Thread.sleep(3000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //第三优先级执行测试用例 @Test(priority=3) public void position(){ //按模纵坐标滑动屏幕 ((JavascriptExecutor) driver).executeScript("window.scrollBy (0,800)"); try { Thread.sleep(3000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }