博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Selenium_WebDriver操作iFrame日历框和复选框_Java
阅读量:6177 次
发布时间:2019-06-21

本文共 3081 字,大约阅读时间需要 10 分钟。

iFrame日历框

页面上遇到iFrame元素时,先用findElement找到这个iFrame元素,然后再WebDriver.switchTo().frame(calFrame)。在iFrame里操作完成后,记得再切换会原来的窗体WebDriver.switchTo().defaultContent()

复选框

复选框是很常见的网页页面元素,操作起来也很easy,findElement找到复选框元素,再使用普通的.click()方式就可以选中或不选中这个checkbox。checkbox.isSelected()则能够查看该复选框是否被选中。

我自己在操作的过程中遇到一个问题,明明这个元素是能够点击的,有onclick属性,可是ChromeDriver提示说这个元素unclickable…百思不得其解,最后切换回FirefoxDriver,一切正常,能够操作= =#

另外,測试过程中假设要用到Chrome的话。除了要预先安装好Chrome浏览器。还须要下载ChromeDriver,官方下载地址例如以下:

下载下来之后放哪里都无所谓事实上,仅仅要在程序里设置一下它的路径就能够正常使用了

System.setProperty("webdriver.chrome.driver","/Applications/Google Chrome.app/Contents/MacOS/chromedriver");this.dr = new ChromeDriver();

代码块

package CalendarCheckboxOperation;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.firefox.FirefoxDriver;import java.util.List;import java.util.concurrent.TimeUnit;public class CalendarCheckboxOperation {
private WebDriver dr; private String url; public CalendarCheckboxOperation(){ this.dr = new FirefoxDriver(); this.url = "https://kyfw.12306.cn/otn/lcxxcx/init"; this.dr.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); } public void action(){ //打开12306查票页面 this.dr.get(this.url); //选择出发城市 this.dr.findElement(By.id("fromStationText")).click(); this.dr.findElement(By.cssSelector("ul.popcitylist>li.ac_even.openLi.ac_odd[title='杭州']")).click(); //选择目的地城市 this.dr.findElement(By.id("toStationText")).click(); this.dr.findElement(By.cssSelector("ul.popcitylist>li.ac_even.openLi.ac_odd[title='厦门']")).click(); this.dr.findElement(By.id("train_start_date")).click(); //选择日期。日期是一个iFrame。先找到这个iFrame,然后切换窗体到iFrame,再选择日期并点击 WebElement calFrame = dr.findElement(By.xpath("/html/body/div[11]/iframe")); this.dr.switchTo().frame(calFrame); this.dr.findElement(By.xpath("/html/body/div[@class='WdateDiv WdateDiv2']/div[3]/table/tbody/tr/td[2]/table/tbody/tr[2]/td[last()]")).click(); this.dr.switchTo().defaultContent(); this.dr.findElement(By.id("_a_search_btn1")).click(); //车次类型先全选上 this.dr.findElement(By.id("span_station_train_code")).click(); //取消其它和K字头列车 this.dr.findElement(By.xpath("//div[@id='sear-sel-bd']/div[1]/div[2]/ul/li/input[@value='QT']")).click(); this.dr.findElement(By.xpath("//div[@id='sear-sel-bd']/div[1]/div[2]/ul/li/input[@value='K']")).click(); //将全部checkbox的Label和是否选中打印出来 List
ccList = this.dr.findElements(By.xpath("//div[@id='sear-sel-bd']/div[1]/div[2]/ul/li")); for(int i = 0; i < ccList.size(); i ++){ System.out.printf("%-20s isSelected:%-20s\n",ccList.get(i).findElement(By.tagName("label")).getText(), ccList.get(i).findElement(By.tagName("input")).isSelected()); } this.dr.quit(); } public static void main(String[] args) { CalendarCheckboxOperation cc = new CalendarCheckboxOperation(); cc.action(); }}

12306页面及程序执行结果截图

这里写图片描写叙述

这里写图片描写叙述

你可能感兴趣的文章
iphone开发之多线程NSThread和NSInvocationOperation
查看>>
MFMailComposeViewController 发邮件
查看>>
velocity 模板解析类
查看>>
HTTP以及HTTPS协议
查看>>
Browser:浏览器版本判断类
查看>>
MyEclipse Servers视窗出现“Could not create the view: An unexpected exception was thrown”错误解决办法...
查看>>
伪类和伪元素
查看>>
jquery
查看>>
Day 3:模块结构和布局
查看>>
PWP+Nginx 集成环境下载
查看>>
【整理】RabbitMQ publish方法中的immediate和mandatory属性
查看>>
JAVA CAS原理深度分析
查看>>
权限模型
查看>>
如何配置 Log4J 只保留最近七天的日志文件
查看>>
Python 类与元类的深度挖掘 II
查看>>
prometheus收集springboot指标
查看>>
global gtags的配置
查看>>
iOS开发 — Quartz 2D知识点应用 (制作了一个Demo,源代码)
查看>>
Creating a Windows Image on OpenStack
查看>>
jquery图片自动缩放
查看>>