当前位置: 首页 > news >正文

鹤壁河南网站建设手机网站建设报价

鹤壁河南网站建设,手机网站建设报价,网页设计商品页面制作,郑州正规的网站建设价格文章目录 selenium基础语法1.定位页面元素2.元素的操作1) 模拟键盘输入(send_keys)2) 点击操作(click)3) 清除去对象输入的文本内容(clear)4) 获取文本(gettext) 3. 等待4. 信息打印5. 窗口6. 导航7. 弹窗8. 鼠标和弹窗9.选择框10.文件上传11.屏幕截图 selenium基础语法 1.定位… 文章目录 selenium基础语法1.定位页面元素2.元素的操作1) 模拟键盘输入(send_keys)2) 点击操作(click)3) 清除去对象输入的文本内容(clear)4) 获取文本(gettext) 3. 等待4. 信息打印5. 窗口6. 导航7. 弹窗8. 鼠标和弹窗9.选择框10.文件上传11.屏幕截图 selenium基础语法 1.定位页面元素 通过CSS选择器可以定位到页面的元素比如常见的基础选择器、Id选择器、类选择器、复合选择器…。 通过Chrome的F12的开发者工具右击对应的标签选择复制复制selector。就复制了对应的CSS。选择复制xpath就复制对应的xpath。 通过driver.findElement方法定位页面的元素该方法的参数为抽象类By里的方法比如By.cssSelector()、By.xpath()、**By.id()**等需要注意无论哪一种方法定位到的元素一定要唯一 public static void test1() throws InterruptedException {ChromeOptions options new ChromeOptions();options.addArguments(--remote-allow-origins*);ChromeDriver driver new ChromeDriver(options);Thread.sleep(1500);driver.get(https://www.baidu.com/);//打开连接Thread.sleep(1500);driver.findElement(By.cssSelector(#kw)); //CSS选择driver.findElement(By.xpath(//*[id\kw\]));// 通过xpath选择Thread.sleep(3000);driver.quit();//退出}2.元素的操作 1) 模拟键盘输入(send_keys) 通过对应的选择器选择对象后可以通过send_keys进行输入一下代码是在百度输入框输入CSDN public static void test1() throws InterruptedException {ChromeOptions options new ChromeOptions();options.addArguments(--remote-allow-origins*);ChromeDriver driver new ChromeDriver(options);Thread.sleep(1500);driver.get(https://www.baidu.com/);//打开连接Thread.sleep(1500);driver.findElement(By.cssSelector(#kw)).sendKeys(CSDN); //CSS选择Thread.sleep(3000);driver.quit();//退出}2) 点击操作(click) 通过click可以实现点击和提交submit可以实现提交。 click可以的操作submit不一定可以页面的任何元素都可以click所有更推荐使用。 public static void test1() throws InterruptedException {ChromeOptions options new ChromeOptions();options.addArguments(--remote-allow-origins*);ChromeDriver driver new ChromeDriver(options);Thread.sleep(1500);driver.get(https://www.baidu.com/);//打开连接Thread.sleep(1500);driver.findElement(By.cssSelector(#kw)).sendKeys(CSDN); //CSS选择后在百度输入框输入CSDNThread.sleep(1000);driver.findElement(By.xpath(//*[id\su\])).click();//点击百度搜索按钮Thread.sleep(3000);driver.quit();//退出}3) 清除去对象输入的文本内容(clear) 通过clerar可以清空输入框里的内容 public static void test1() throws InterruptedException {ChromeOptions options new ChromeOptions();options.addArguments(--remote-allow-origins*);ChromeDriver driver new ChromeDriver(options);Thread.sleep(1500);driver.get(https://www.baidu.com/);//打开连接Thread.sleep(1500);driver.findElement(By.cssSelector(#kw)).sendKeys(CSDN); //CSS选择后在百度输入框输入CSDNThread.sleep(1000);driver.findElement(By.cssSelector(#kw)).clear();//清空输入框的内容Thread.sleep(1000);driver.findElement(By.cssSelector(#kw)).sendKeys(leetcode);Thread.sleep(1000);driver.findElement(By.xpath(//*[id\su\])).click();//点击百度搜索按钮Thread.sleep(3000);driver.quit();//退出}4) 获取文本(gettext) 通过gettext可以获取文本内容 比如获取百度首页的新闻两字 public static void test2() throws InterruptedException {ChromeOptions options new ChromeOptions();options.addArguments(--remote-allow-origins*);ChromeDriver driver new ChromeDriver(options);driver.get(https://www.baidu.com/);Thread.sleep(1000);String str driver.findElement(By.cssSelector(#s-top-left a:nth-child(1))).getText();System.out.println(str);}需要注意一下不是说页面上可以看见的文字都能成为文本有的文本是属性对应的属性值不能通过getText来获取文本。需要使用getAttribute方法来获取属性值。 比如说要获取百度一下按钮的属性值 public static void test2() throws InterruptedException {ChromeOptions options new ChromeOptions();options.addArguments(--remote-allow-origins*);ChromeDriver driver new ChromeDriver(options);driver.get(https://www.baidu.com/);Thread.sleep(1000);String str driver.findElement(By.cssSelector(#su)).getAttribute(value);System.out.println(str); }3. 等待 代码的执行速度是非常快的而前端响应页面渲染的速度相对来说是比较慢一点的可能导致的结果是代码已经执行到了下一步页面还没有渲染出来元素找不到。所以需要进行等待。 等待分为三个强制等待、隐式等待、显式等待 强制等待 使用Thread.sleep让程序暂停一会等待指定的时间之后继续执行下一步. 优点语法简单适合调试时使用缺点需要等待的时间固定造成测试时间的大量消耗大大的减少了自动化测试效率。 隐式等待 在规定 时间范围内轮询等待元素出现之后就立即结束如果规定时间内元素仍然没有出现则会抛出一个NoSuchElementException ChromeOptions options new ChromeOptions(); options.addArguments(--remote-allow-origins*); ChromeDriver driver new ChromeDriver(options); driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(1));// 隐式等待1秒隐式等待作用在webdriver整个生命周期只要没有执行driver.quit也就是没有退出浏览器隐式等待都是一直存在的 优点节省了大量的等待时间元素展示之后就可以立即执行下一步执行效率高缺点需要等待所有元素都展现才会执行下一步仍然会有额外的时间上的浪费比如我们需要选择的元素已经瞬间渲染了但是其它元素还没有渲染此时就需要等待其它元素显示完毕 显示等待 强制等待可以针对某一个元素来测试 WebDriverWait第一个参数 webdriver对象第二个参数Duration类方法用于设置等待时间 public static void test4() {ChromeOptions options new ChromeOptions();options.addArguments(--remote-allow-origins*);ChromeDriver driver new ChromeDriver(options);driver.get(https://www.baidu.com/);WebDriverWait webDriverWait new WebDriverWait(driver,Duration.ofSeconds(1));webDriverWait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(#kw))); 强制等待什么时候停止等括号里的条件满足为止如果条件在指定时间内没有满足就会抛出异常。 优点针对某一个元素来进行等待极大的降低了自动化测试的的等待时间缺点写法复杂 ExpectedConditions是selenium中的一个类提供了很多方法来进行测试 ExpectedConditions.presenceOfElementLocated检查页面是否存在对应元素ExpectedConditions.textToBe检查页面对应的文本信息是否正确 代码中不建议同时使用隐式等待和强制等待同时使用可能会出现一个意想不到的结果。 4. 信息打印 打印标题(getTitle())打印当前URL(getCurrentUrl()) public static void test5() throws InterruptedException {ChromeOptions options new ChromeOptions();options.addArguments(--remote-allow-origins*);ChromeDriver driver new ChromeDriver(options);Thread.sleep(1000);driver.get(https://www.baidu.com);Thread.sleep(1000);String title driver.getTitle();String url driver.getCurrentUrl();System.out.println(当前标题title);System.out.println(当前urlurl);}但如果我们进入到百度首页点解新闻页面后再次打印url和title还是首页的信息 public static void test5() throws InterruptedException {ChromeOptions options new ChromeOptions();options.addArguments(--remote-allow-origins*);ChromeDriver driver new ChromeDriver(options);Thread.sleep(2000);driver.get(https://www.baidu.com/);Thread.sleep(2000);String title driver.getTitle();String url driver.getCurrentUrl();System.out.println(当前标题title);System.out.println(当前urlurl);Thread.sleep(2000);// 点击切换到新闻页面driver.findElement(By.xpath(//*[id\s-top-left\]/a[1])).click();Thread.sleep(2000);title driver.getTitle();url driver.getCurrentUrl();System.out.println(当前标题title);System.out.println(当前urlurl);Thread.sleep(2000);driver.quit();}点击超链接之后打开了新的标签页这对于selenium来说是不知道该展示的页面是什么selenium对于每一个标签页都给了唯一标识称为句柄。 5. 窗口 获取当前页面的句柄driver.getWindowHandle()获取所有标签页的句柄driver.getWindowHandles()切换到新标签页面driver.switchTo().window(句柄) 通过句柄我们就能跳转到指定页面了 public static void test6() throws InterruptedException {ChromeOptions options new ChromeOptions();options.addArguments(--remote-allow-origins*);ChromeDriver driver new ChromeDriver(options);driver.get(https://www.baidu.com);Thread.sleep(2000);// 获取百度首页句柄String window driver.getWindowHandle();Thread.sleep(2000);// 点击按钮跳转得到新闻页面driver.findElement(By.cssSelector(#s-top-left a:nth-child(1))).click();Thread.sleep(2000);// 获取所有标签页的句柄SetString windows driver.getWindowHandles();for (String s : windows) {if (!s.equals(window)) {// 切换到新闻页窗口driver.switchTo().window(s);}}System.out.println(Title:driver.getTitle());System.out.println(Url:driver.getCurrentUrl());driver.quit();}窗口大小设置 最大化driver.manage().window().maximize()最小化driver.manage().window().minimize()设置指定尺寸driver.manage().window().setSize(new Dimension(宽高) public static void test7() throws InterruptedException {ChromeOptions options new ChromeOptions();options.addArguments(--remote-allow-origins*);ChromeDriver driver new ChromeDriver(options);driver.get(https://www.baidu.com);Thread.sleep(1000);// 窗口最小化driver.manage().window().minimize();Thread.sleep(3000);// 窗口最大化driver.manage().window().maximize();Thread.sleep(3000);// 指定窗口大小driver.manage().window().setSize(new Dimension(1500,1000));Thread.sleep(3000);driver.quit();} 6. 导航 selenium里提供了navigate接口来实现页面的导航 前进driver.navigate().forward()后退driver.navigate().back() public static void test8() throws InterruptedException {ChromeOptions options new ChromeOptions();options.addArguments(--remote-allow-origins*);ChromeDriver driver new ChromeDriver(options);// 打开百度翻译driver.get(https://fanyi-pro.baidu.com/?hmsr%E7%99%BE%E5%BA%A6%E7%BF%BB%E8%AF%91hmpl%E5%9B%BA%E5%AE%9A%E5%85%A5%E5%8F%A3hmcu%E9%A1%B6%E9%83%A8%E6%8C%89%E9%92%AE);// 点击日常快译driver.findElement(By.xpath(//*[id\whole-page-header\]/div/ul/li[2]/a)).click();Thread.sleep(2000);// 后退driver.navigate().back();Thread.sleep(1500);// 前进driver.navigate().forward();Thread.sleep(1500);// 后退driver.navigate().back();Thread.sleep(1500);// 前进driver.navigate().forward();Thread.sleep(2000);driver.quit();}7. 弹窗 selenium不能直接编译js语言但是仍然可以使用方法来执行Js语言使用driver.executeScrip(js语言) 这种方式类似于在F12里执行Js public static void test9() throws InterruptedException {ChromeOptions options new ChromeOptions();options.addArguments(--remote-allow-origins*);ChromeDriver driver new ChromeDriver(options);driver.get(https://www.baidu.com);driver.executeScript(alert(test));Thread.sleep(2000);driver.quit();}可以在前端代码里定位到普通的弹窗都可以使用**driver.findElement()**方法来定位到元素但还有一些弹窗是无法定位到的。 警告弹窗和确认弹窗是不能在前端代码定位到元素的需要使用Selenium中提供Alert接口来处理 Alert alert driver.switchTo().alert(); alert.accept();// 点击弹窗上的确认按钮 alert.dismiss();//点击弹窗上的取消按钮提示弹窗 代码 Alert alert driver.switchTo().alert(); alert.sendKeys(哈哈哈);// 输入 Thread.sleep(2000); alert.accept();8. 鼠标和弹窗 selenium提供了Actions接口 鼠标移动到指定元素上 关键代码actions.clickAndHold(element).perform() public static void test12() throws InterruptedException {ChromeOptions options new ChromeOptions();options.addArguments(--remote-allow-origins*);ChromeDriver driver new ChromeDriver(options);driver.get(https://www.baidu.com);Thread.sleep(2000);WebElement element driver.findElement(By.cssSelector(#form span.bg.s_ipt_wr.new-pmd.quickdelete-wrap span.soutu-btn));Actions actions new Actions(driver);actions.clickAndHold(element).perform();Thread.sleep(3000);driver.quit();}键盘输入sendKeys driver.findElement(By.cssSelector(#kw)).sendKeys(CSDN);9.选择框 selenium提供了select接口 selectByValue通过values属性来选择selectByIndex通过索引来选择索引从0开始selectByVisibleText通过option里的课件文本来选择 selectoption valuedefault请选择/optionoption value one吃饭/optionoption value tow睡觉/optionoption valuethree打豆豆/option/selectpublic static void test13() throws InterruptedException {ChromeOptions options new ChromeOptions();options.addArguments(--remote-allow-origins*);ChromeDriver driver new ChromeDriver(options);driver.get(./test.html);Thread.sleep(2000);WebElement element driver.findElement(By.xpath(/html/body/select));Select select new Select(element);select.selectByValue(one);Thread.sleep(2000);select.selectByIndex(0);Thread.sleep(2000);select.selectByVisibleText(打豆豆);Thread.sleep(1000);driver.quit();}10.文件上传 页面中点击上传文件会弹出来系统窗口selenium不能操作系统窗口。 通过sendKey方法输入我们想要上传的文件路径以及文件名就能后达到文件上传的一个操作 // 获取上传文件按钮 WebElement element driver.findElement(By.cssSelector(#uploadImg)); // 指定路径选择文件 element.sendKeys(C:\\Users\\HeHanYu\\Desktop\\code\\spring.jpg);11.屏幕截图 selinium还提供了屏幕截图API就可以验证代码的执行速度比页面的渲染速度快不少了。 public static void test15() {ChromeOptions options new ChromeOptions();options.addArguments(--remote-allow-origins*);ChromeDriver driver new ChromeDriver(options);driver.get(https://www.baidu.com);driver.findElement(By.cssSelector(#kw)).sendKeys(selenium);driver.findElement(By.cssSelector(#su)).click();// 屏幕截图File srcFile driver.getScreenshotAs(OutputType.FILE);// 将截图问价保存到指定路径下File fileName new File(./src/test/img/demo.jpg);FileUtil.copyFile(srcFile,fileName);}当点击搜索后进行了屏幕截图发现页面的确没有渲染出来所有在使用selenium操作页面元素时要使用一些等待操作
http://www.w-s-a.com/news/494959/

相关文章:

  • 山西网站建设 哪家好四川城乡和建设厅网站
  • 有瀑布流的网站小型商城网站
  • 百石网怎么做网站二次开发软件
  • 网站域名是什么东西制作网页哪家好
  • 合肥网站建设团队简述网站内容管理流程
  • 网站广告是内容营销吗wordpress增加背景图片
  • 网站建设技术jsp课程设计响应式布局网站开发
  • 东莞网站排名优化seo套路网站怎么做的
  • 我做网站网络建站一般多少钱
  • 如何快速提升网站关键词排名房地产网站开发毕业设计
  • 做网站 提交源码 论坛sem分析是什么意思
  • 网站建设与部署阿里云大学百度付费推广有几种方式
  • 作品集怎么做网站个人简历模板免费下
  • 工业网站素材重庆关键词自动排名
  • 拖拽式网站建设费用微网站怎么做的好名字
  • 长沙电信网站备案谷歌推广怎么做最有效
  • 网站建设与管理总结报告华为开发者联盟
  • 门诊部网站建设天空建筑网站
  • 扬州市城乡建设网站高端品牌鞋子有哪些牌子
  • 杭州网站建设招聘网长沙网络销售公司
  • 网站制作一年多少钱免费做电子章网站
  • 信誉好的营销网站建设徐州市铜山新区建设局网站
  • 建行网站关于我们山西seo和网络推广
  • 1m带宽做网站怎么样深圳网站建设制作开发公司
  • 网站建设 服务内容 费用郴州网站建设公司哪里有
  • 网站关键词重要性育才网站建设
  • 网络安全形势下怎么建设学校网站wordpress最新主题下载
  • 自己建设网站需要什么条件.gs域名做网站怎么样
  • 网上做公益的网站推广手机卡返佣平台
  • 网站是公司域名是个人可以南京建设银行官方网站