畢設(shè)做網(wǎng)站答辯稿百度免費(fèi)資源網(wǎng)站
目錄
1. 多層框架/窗口定位
2. 下拉框處理
2.1 前端界面
2.2 代碼
?3. 針對(duì) alert 彈窗進(jìn)行操作
3.1 前端界面
3.2 代碼
4. 文件提交
4.1 前端界面
4.2 代碼?
5. 顯示等待
6. 操作瀏覽器滾動(dòng)條
7. 截圖
8. 瀏覽器關(guān)閉
9. 窗口切換
在上篇文章中,我們學(xué)習(xí)了 selenium 的一部分 API ,接下來(lái)我們將繼續(xù)學(xué)習(xí) selenium 的其他 API。
1. 多層框架/窗口定位
運(yùn)行以下代碼:
<html>
<head><meta http-equiv="content-type" content="text/html;charset=utf-8" /><title>frame</title><link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet" /><script type="text/javascript">$(document).ready(function(){});</script>
</head>
<body>
<div class="row-fluid"><div class="span10 well"><h3>frame</h3><iframe id="f1" src="inner.html" width="800", height="600">#document<html><head><meta http-equiv="content-type" content="text/html;charset=utf-8" /><title>inner</title></head><body><div class="row-fluid"><div class="span6 well"><h3>inner</h3><iframe id="f2" src="http://www.baidu.com" width="700"height="500"></iframe><a href="javascript:alert('watir-webdriver better thanselenium webdriver;')">click</a></div></div></body></html></iframe></div>
</div>
</body>
<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
</html>
在展示的界面中,點(diǎn)擊“click”,彈出如下圖所示的對(duì)話框:?
那么,對(duì)于以上的多層框架,我們?nèi)绾芜M(jìn)行操作呢?
private static void page02() {// 創(chuàng)建瀏覽器驅(qū)動(dòng)ChromeOptions options = new ChromeOptions();options.addArguments("--remote-allow-origins=*");WebDriver webDriver = new ChromeDriver(options);// 打開(kāi)網(wǎng)頁(yè)webDriver.get("http://localhost:63342/TestCode/src/main/Page/test02.html?_ijt=bl946c4l1esjbgi09kpv3kfull");// 找到 click 元素點(diǎn)擊webDriver.switchTo().frame("f1");webDriver.findElement(By.cssSelector("body > div > div > a")).click(); // click 元素屬于 f1}
運(yùn)行以上代碼后,可以看到自動(dòng)選擇了 f1 點(diǎn)擊了 click 按鈕,并彈出了對(duì)話框。
2. 下拉框處理
2.1 前端界面
<html>
<body>
<select id="ShippingMethod"
onchange="updateShipping(options[selectedIndex]);" name="ShippingMethod">
<option value="12.51">UPS Next Day Air ==> $12.51</option>
<option value="11.61">UPS Next Day Air Saver ==> $11.61</option>
<option value="10.69">UPS 3 Day Select ==> $10.69</option>
<option value="9.03">UPS 2nd Day Air ==> $9.03</option>
<option value="8.34">UPS Ground ==> $8.34</option>
<option value="9.25">USPS Priority Mail Insured ==> $9.25</option>
<option value="7.45">USPS Priority Mail ==> $7.45</option>
<option value="3.20" selected="">USPS First Class ==> $3.20</option>
</select>
</body>
</html>
如下圖所示:
2.2 代碼
我們根據(jù) Value 來(lái)進(jìn)行選擇:
代碼如下:?
private static void page03() {// 創(chuàng)建瀏覽器驅(qū)動(dòng)WebDriver webDriver = new ChromeDriver();// 打開(kāi)網(wǎng)頁(yè)webDriver.get("http://localhost:63342/TestCode/src/main/Page/test03.html?_ijt=446o7rpogvt1o4i9oujv9j6tcg&_ij_reload=RELOAD_ON_SAVE");// 操作下拉框Select select = new Select(webDriver.findElement(By.cssSelector("#ShippingMethod")));// 通過(guò) Value 進(jìn)行修改
// select.selectByValue("12.51");// 通過(guò) Index 進(jìn)行修改select.selectByIndex(2);}
?3. 針對(duì) alert 彈窗進(jìn)行操作
針對(duì)一個(gè)普通的 alert 的彈窗的操作有:確定、取消、輸入。
3.1 前端界面
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<button onclick="Click()">這是一個(gè)彈窗</button>
</body>
<script type="text/javascript">function Click() {let name = prompt("請(qǐng)輸入姓名:");let parent = document.querySelector("body");let child = document.createElement("div");child.innerHTML = name;parent.appendChild(child)}
</script>
</html>
3.2 代碼
private static void page04() throws InterruptedException {WebDriver webDriver = new ChromeDriver();webDriver.get("http://localhost:63342/TestCode/src/main/Page/test04.html?_ijt=qndlcui1g1leqr5le5ehehn2hm&_ij_reload=RELOAD_ON_SAVE");webDriver.findElement(By.cssSelector("button")).click();sleep(3000);
// // alert 彈窗確定
// webDriver.switchTo().alert().accept();
// // alert 彈窗取消
// webDriver.switchTo().alert().dismiss();// alert 彈窗輸入webDriver.switchTo().alert().sendKeys("你好");webDriver.switchTo().alert().accept();}
4. 文件提交
4.1 前端界面
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<input type="file">
</body>
</html>
4.2 代碼?
private static void page05() {WebDriver webDriver = new ChromeDriver();webDriver.get("http://localhost:63342/TestCode/src/main/Page/test05.html?_ijt=jm7pqiancl1i3ktkuciodrk1dl&_ij_reload=RELOAD_ON_SAVE");// 找到按鈕(上傳文件的按鈕),輸入一個(gè)字符串webDriver.findElement(By.cssSelector("input")).sendKeys("D:\\CSDN\\cat.jpg");}
以下內(nèi)容為補(bǔ)充內(nèi)容!!!?
5. 顯示等待
顯示等待和隱式等待,表示最多等待輸入的時(shí)間,如果找到了對(duì)應(yīng)元素則直接執(zhí)行后續(xù)代碼,不再?gòu)?qiáng)制等待,即顯示等待和隱式等待都是智能等待;不同點(diǎn):隱式等待等待的是頁(yè)面上的所有元素,顯示等待等待條件滿足即可。
private static void test13() throws InterruptedException {WebDriver webDriver = new ChromeDriver();
// webDriver.get("http://www.baidu.com/");webDriver.get("http://localhost:63342/TestCode/src/main/Page/test02.html?_ijt=7f6liucvphpe698jjd88202qv0&_ij_reload=RELOAD_ON_SAVE");sleep(3000);WebDriverWait webDriverWait = new WebDriverWait(webDriver,50);
// webDriverWait.until(ExpectedConditions.titleIs("百度一下,你就知道"));webDriverWait.until(ExpectedConditions.textToBe(By.cssSelector("hs"),"frame"));}
6. 操作瀏覽器滾動(dòng)條
private static void test14() throws InterruptedException {WebDriver webDriver = new ChromeDriver();webDriver.get("http://www.baidu.com/");// 在搜索框輸入”軟件“webDriver.findElement(By.cssSelector("#kw")).sendKeys("軟件");// 點(diǎn)解”百度一下"按鈕webDriver.findElement(By.cssSelector("#su")).click();sleep(3000);// 滾動(dòng)條滾動(dòng)到最下端((JavascriptExecutor)webDriver).executeScript("document.documentElement.scrollTop=10000;");}
7. 截圖
添加依賴:https://mvnrepository.com/artifact/commons-io/commons-io/2.4
將以上依賴添加到 pom.xml 中:?
private static void test15() throws IOException, InterruptedException {WebDriver webDriver = new ChromeDriver();webDriver.get("http://localhost:63342/TestCode/src/main/Page/test02.html?_ijt=7f6liucvphpe698jjd88202qv0&_ij_reload=RELOAD_ON_SAVE");sleep(5000);// 強(qiáng)制類型轉(zhuǎn)換File src_file = ((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);// 將截圖復(fù)制到指定的文件路徑下,并命名為:jietu.pngFileUtils.copyFile(src_file,new File("D:\\CSDN\\jietu.png"));}
8. 瀏覽器關(guān)閉
private static void test14() throws InterruptedException {WebDriver webDriver = new ChromeDriver();webDriver.get("http://www.baidu.com/");// 在搜索框輸入”軟件“webDriver.findElement(By.cssSelector("#kw")).sendKeys("軟件");// 點(diǎn)解”百度一下"按鈕webDriver.findElement(By.cssSelector("#su")).click();sleep(3000);// 滾動(dòng)條滾動(dòng)到最下端((JavascriptExecutor)webDriver).executeScript("document.documentElement.scrollTop=10000;");// 關(guān)閉瀏覽器webDriver.quit();}
quit 相當(dāng)于直接點(diǎn)擊了右上角進(jìn)行關(guān)閉。
private static void test16() {WebDriver webDriver = new ChromeDriver();webDriver.get("http://www.baidu.com/");webDriver.findElement(By.cssSelector("#s-top-left > a:nth-child(1)")).click();// 關(guān)閉瀏覽器webDriver.close();}
close 關(guān)閉的是當(dāng)前頁(yè)面;quit 關(guān)閉的是瀏覽器,同時(shí)會(huì)刪除網(wǎng)站的 cookie。
9. 窗口切換
private static void test17() {WebDriver webDriver = new ChromeDriver();webDriver.get("http://www.baidu.com/");webDriver.findElement(By.cssSelector("#s-top-left > a:nth-child(1)")).click();// 獲取到瀏覽器所有的窗口句柄Set<String> handles = webDriver.getWindowHandles();String target_handle = "";for(String handle:handles){target_handle = handle;}// 窗口切換webDriver.switchTo().window(target_handle);webDriver.findElement(By.cssSelector("#header-link-wrapper > li:nth-child(5) > a")).click();}