规范 加强网站建设管理,微信小商店官网入口,如何网站建设的方案,甘肃省建设厅官方网站造价总站目录
1. 多层框架/窗口定位
2. 下拉框处理
2.1 前端界面
2.2 代码 3. 针对 alert 弹窗进行操作
3.1 前端界面
3.2 代码
4. 文件提交
4.1 前端界面
4.2 代码
5. 显示等待
6. 操作浏览器滚动条
7. 截图
8. 浏览器关闭
9. 窗口切换 在上篇文章中#xff0c;我们学…目录
1. 多层框架/窗口定位
2. 下拉框处理
2.1 前端界面
2.2 代码 3. 针对 alert 弹窗进行操作
3.1 前端界面
3.2 代码
4. 文件提交
4.1 前端界面
4.2 代码
5. 显示等待
6. 操作浏览器滚动条
7. 截图
8. 浏览器关闭
9. 窗口切换 在上篇文章中我们学习了 selenium 的一部分 API 接下来我们将继续学习 selenium 的其他 API。
1. 多层框架/窗口定位
运行以下代码
html
headmeta http-equivcontent-type contenttext/html;charsetutf-8 /titleframe/titlelink hrefhttp://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css relstylesheet /script typetext/javascript$(document).ready(function(){});/script
/head
body
div classrow-fluiddiv classspan10 wellh3frame/h3iframe idf1 srcinner.html width800, height600#documenthtmlheadmeta http-equivcontent-type contenttext/html;charsetutf-8 /titleinner/title/headbodydiv classrow-fluiddiv classspan6 wellh3inner/h3iframe idf2 srchttp://www.baidu.com width700height500/iframea hrefjavascript:alert(watir-webdriver better thanselenium webdriver;)click/a/div/div/body/html/iframe/div
/div
/body
script srchttp://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js/script
/html
在展示的界面中点击“click”弹出如下图所示的对话框 那么对于以上的多层框架我们如何进行操作呢
private static void page02() {// 创建浏览器驱动ChromeOptions options new ChromeOptions();options.addArguments(--remote-allow-origins*);WebDriver webDriver new ChromeDriver(options);// 打开网页webDriver.get(http://localhost:63342/TestCode/src/main/Page/test02.html?_ijtbl946c4l1esjbgi09kpv3kfull);// 找到 click 元素点击webDriver.switchTo().frame(f1);webDriver.findElement(By.cssSelector(body div div a)).click(); // click 元素属于 f1}
运行以上代码后可以看到自动选择了 f1 点击了 click 按钮并弹出了对话框。 2. 下拉框处理
2.1 前端界面
html
body
select idShippingMethod
onchangeupdateShipping(options[selectedIndex]); nameShippingMethod
option value12.51UPS Next Day Air $12.51/option
option value11.61UPS Next Day Air Saver $11.61/option
option value10.69UPS 3 Day Select $10.69/option
option value9.03UPS 2nd Day Air $9.03/option
option value8.34UPS Ground $8.34/option
option value9.25USPS Priority Mail Insured $9.25/option
option value7.45USPS Priority Mail $7.45/option
option value3.20 selectedUSPS First Class $3.20/option
/select
/body
/html
如下图所示 2.2 代码
我们根据 Value 来进行选择 代码如下
private static void page03() {// 创建浏览器驱动WebDriver webDriver new ChromeDriver();// 打开网页webDriver.get(http://localhost:63342/TestCode/src/main/Page/test03.html?_ijt446o7rpogvt1o4i9oujv9j6tcg_ij_reloadRELOAD_ON_SAVE);// 操作下拉框Select select new Select(webDriver.findElement(By.cssSelector(#ShippingMethod)));// 通过 Value 进行修改
// select.selectByValue(12.51);// 通过 Index 进行修改select.selectByIndex(2);} 3. 针对 alert 弹窗进行操作
针对一个普通的 alert 的弹窗的操作有确定、取消、输入。
3.1 前端界面
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/title
/head
body
button onclickClick()这是一个弹窗/button
/body
script typetext/javascriptfunction Click() {let name prompt(请输入姓名);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?_ijtqndlcui1g1leqr5le5ehehn2hm_ij_reloadRELOAD_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 langen
headmeta charsetUTF-8titleTitle/title
/head
body
input typefile
/body
/html 4.2 代码 private static void page05() {WebDriver webDriver new ChromeDriver();webDriver.get(http://localhost:63342/TestCode/src/main/Page/test05.html?_ijtjm7pqiancl1i3ktkuciodrk1dl_ij_reloadRELOAD_ON_SAVE);// 找到按钮上传文件的按钮输入一个字符串webDriver.findElement(By.cssSelector(input)).sendKeys(D:\\CSDN\\cat.jpg);} 以下内容为补充内容
5. 显示等待
显示等待和隐式等待表示最多等待输入的时间如果找到了对应元素则直接执行后续代码不再强制等待即显示等待和隐式等待都是智能等待不同点隐式等待等待的是页面上的所有元素显示等待等待条件满足即可。 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?_ijt7f6liucvphpe698jjd88202qv0_ij_reloadRELOAD_ON_SAVE);sleep(3000);WebDriverWait webDriverWait new WebDriverWait(webDriver,50);
// webDriverWait.until(ExpectedConditions.titleIs(百度一下你就知道));webDriverWait.until(ExpectedConditions.textToBe(By.cssSelector(hs),frame));}
6. 操作浏览器滚动条
private static void test14() throws InterruptedException {WebDriver webDriver new ChromeDriver();webDriver.get(http://www.baidu.com/);// 在搜索框输入”软件“webDriver.findElement(By.cssSelector(#kw)).sendKeys(软件);// 点解”百度一下按钮webDriver.findElement(By.cssSelector(#su)).click();sleep(3000);// 滚动条滚动到最下端((JavascriptExecutor)webDriver).executeScript(document.documentElement.scrollTop10000;);}
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?_ijt7f6liucvphpe698jjd88202qv0_ij_reloadRELOAD_ON_SAVE);sleep(5000);// 强制类型转换File src_file ((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);// 将截图复制到指定的文件路径下,并命名为jietu.pngFileUtils.copyFile(src_file,new File(D:\\CSDN\\jietu.png));}
8. 浏览器关闭
private static void test14() throws InterruptedException {WebDriver webDriver new ChromeDriver();webDriver.get(http://www.baidu.com/);// 在搜索框输入”软件“webDriver.findElement(By.cssSelector(#kw)).sendKeys(软件);// 点解”百度一下按钮webDriver.findElement(By.cssSelector(#su)).click();sleep(3000);// 滚动条滚动到最下端((JavascriptExecutor)webDriver).executeScript(document.documentElement.scrollTop10000;);// 关闭浏览器webDriver.quit();}quit 相当于直接点击了右上角进行关闭。 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();// 关闭浏览器webDriver.close();}
close 关闭的是当前页面quit 关闭的是浏览器同时会删除网站的 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();// 获取到浏览器所有的窗口句柄SetString 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();}