四,弹出框

京东购物车为例 , 点击‘删除’ 或者‘移到我的关注’ ,就会弹出下面这个框框,练吧:

(其实这也不是常规的弹出框,二是div css前端技术做的效果,本想做个Alert的案例,实在不好找例子)

真正的Alert ,不能用常规页面元素方法定位到,可以用以下办法处理:几种弹出框的处理办法

Alert alert = driver.switchTo().alert();
alert.accept(); //确定
alert.dismiss(); //取消
alert.getText(); //获取弹框内容

------------------------------------------------------------

下面是今天案例的思路

1.首页点击购物车

2.要求登录,输入用户名&密码

3. 找到第一个商品

4.移动到购物车

  1. package TestCases;
  2.  
  3. import java.awt.AWTException;
  4. import java.util.Iterator;
  5. import java.util.List;
  6. import java.util.Set;
  7. import java.util.concurrent.TimeUnit;
  8.  
  9. import org.openqa.selenium.By;
  10. import org.openqa.selenium.WebDriver;
  11. import org.openqa.selenium.WebElement;
  12. import org.openqa.selenium.chrome.ChromeDriver;
  13.  
  14. public class SeleniumAction_CheckBox {
  15. private static WebDriver driver;
  16. private static String baseUrl;
  17.  
  18. public static void main(String[] args) throws AWTException {
  19. driver=new ChromeDriver();
  20. baseUrl="https://www.jd.com";
  21. driver.get(baseUrl);
  22. driver.findElement(By.linkText("我的购物车")).click();
  23.  
  24. //System.out.println(currentWindow);
  25. // 得到所有窗口的句柄
  26. String windowHandle1 = GetCurrentWindowHandle(driver);
  27. SwitchWindowHand(windowHandle1);
  28. System.out.println(windowHandle1);
  29.  
  30. driver.findElement(By.linkText("登录")).click();
  31.  
  32. driver.switchTo().frame("dialogIframe");
  33. driver.findElement(By.linkText("账户登录")).click();
  34. driver.findElement(By.id("loginname")).sendKeys("**********");//输入京东用户名
  35. driver.findElement(By.id("nloginpwd")).sendKeys("***********");//输入密码
  36. driver.findElement(By.id("loginsubmit")).click();
  37. driver.switchTo().defaultContent();
  38.  
  39. driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
  40.  
  41. List<WebElement> list = driver.findElements(By.xpath("//div[@class='item-form']//a[2]"));
  42. // System.out.println(list.size());
  43. // for(WebElement E:list){
  44. // System.out.println(E.getText());
  45. // }
  46. System.out.println(list.get(2).getText());
  47. list.get(2).click();
  48.  
  49. driver.findElement(By.linkText("确定")).click();
  50. }
  51.  
  52. public static String GetCurrentWindowHandle(WebDriver dr){
  53. return dr.getWindowHandle();
  54. }
  55.  
  56. public static void SwitchWindowHand(String currentWindow) {
  57. Set<String> handles = driver.getWindowHandles();
  58. Iterator<String> it = handles.iterator();
  59. while (it.hasNext()) {
  60. String handle = it.next();
  61. if (currentWindow.equals(handle))
  62. continue; //跳出当前循环
  63. WebDriver window = driver.switchTo().window(handle);
  64. }
  65. }
  66.  
  67. }

Java Selenium - 元素操作 (四)的更多相关文章

  1. Java Selenium - 元素操作 (二)

    一篇概括了常用的元素定位方法,但是找到元素还是不够的,模拟鼠标的操作,完成各个功能点的自动操作才是关键. 下面是常见的页面元素操作会涉及到的方法,不是很全,比较复杂的后面单独拿出来做案例. 一, 输入 ...

  2. Java Selenium - 元素操作 (三)

    接上一篇,我们依然以京东的网站做示例. 三,单选项 下面来做这样一条case: 1. 登录京东旅行网页. 2. 在国内机票板块,购买从北京到武汉的往返机票,时间为明天出发,一周后返回. 3.搜索机票. ...

  3. java+selenium元素定位和元素操作

    1.元素定位 ID定位元素: findElement(By.id(“”)); 通过元素的名称定位元素: findElement(By.name(“”)); 通过元素的html中的位置定位元素: fin ...

  4. selenium元素操作

    1.文本框(text field or textarea) element.sendKeys("test");//在输入框中输入内容: element.clear(); //将输入 ...

  5. selenium测试(Java)--元素操作(五)

    元素的操作有 1. 清除文本 2. 模拟按键输入 3. 单击元素 4. 返回元素尺寸 5. 获取文本 6. 获取属性值 7. 判断是否可见 8. 提交 下面通过操作新浪邮箱的注册界面的脚本来展示使用方 ...

  6. Java + selenium 元素定位(6)之iframe切换(即对富文本框的操作)

    在元素定位中,对富文本框的元素定位是特别的,当我们使用普通的元素定位方法对富文本框进行操作时,我们会发现不管我们之前介绍的八种方法中的任何方法,我们都不能成功定位到富文本框,并对其进行操作.那是因为富 ...

  7. Java + selenium 元素定位(5)之By Xpath

    这篇关于Xpath方法的文章和之前那篇CSS的方法一样,使用前,需要先掌握一些Xpath的相关知识.当然,网上也有各种工具可以帮助我们获取到元素的Xpath,但是这并不代表着我们就可以不用了解Xpat ...

  8. Java + selenium 元素定位(3)之By TagName

    本篇介绍findElement接口中的By TagName方法.首先,要知道什么是tagname.之前我们使用F12开发者工具查看网页元素是,发现每行代码前都有<input>.<bo ...

  9. 运用js解决java selenium元素定位问题

    一.解决定位并操作uneditable元素 尝试了通过id,xpath等等定位元素后点击都提示Element is not clickable at point 再看了下可以click的元素发现上面有 ...

随机推荐

  1. Java:对double值进行四舍五入,保留两位小数的几种方法

    1. 功能 将程序中的double值精确到小数点后两位.可以四舍五入,也可以直接截断. 比如:输入12345.6789,输出可以是12345.68也可以是12345.67.至于是否需要四舍五入,可以通 ...

  2. 中州韻输入法框架 ibus-rime 修改样式

    一键命令移植 Gnome-Shell 主题 $ sudo su $ curl -LO https://github.com/lemos1235/Little-Utils/raw/master/gnom ...

  3. 前端基础开发之HTML

    简介:                                                                                1.HTML是什么? htyper ...

  4. C语言迷题:有符号数与无符号数的问题(转)

    https://my.oschina.net/kelvinfang/blog/134725

  5. triangular distribution

    mode(众数), 一组数据中出现次数最多的那个(或那些)数值. 众数可以不存在或多于一个. 例如, 1,2,3,3,4的众数是3. 1,2,2,3,3,4的众数是2和3. 1,2,3,4,5没有众数 ...

  6. 洛谷P1032 字串变换【bfs】

    题目链接:https://www.luogu.org/problemnew/show/P1032 题意: 给定一个原字符串和目标字符串,以及几个字符串变换的规则. 问能否根据这几个规则在十步之内把原字 ...

  7. SQL Server 2016 共享功能目录 不可修改

    x 个人电脑上没有安装MSSQL,以前需要链接数据库写SQL,都是在{VS ->>视图->>SQL Server对象资源管理器}直接链接数据库进行访问操作的... 但是确实有些 ...

  8. MFC实现一元稀疏多项式运算器

    MFC实现一元稀疏多项式运算器 基本要求 输入并建立两个多项式 多项式a与b相加,建立和多项式c 多项式a与b相减,建立差多项式d 输出多项式a, b, c, d.输出格式:比如多项式a为:A(x)= ...

  9. Python:random模块

    近排练习代码时候经常会用到random模块,以防后面忘记还是需要记录一下. 首先导入模块: import random random.random():用于生成一个0到1的随机浮点数: 0 <= ...

  10. 这就是使用ReportBuilder最简单的例子

    用这组控件最简单的例子:在窗体上放上组件名为ppBDEPipeline1,ppReport1,ppDesigner1,ppViewer1,DataSource1的控件,设置ppreport1的data ...