1. 程式人生 > >Selenium_WebDriver操作iFrame日曆框和複選框_Java

Selenium_WebDriver操作iFrame日曆框和複選框_Java

iFrame日曆框

頁面上遇到iFrame元素時,先用findElement找到這個iFrame元素,然後再WebDriver.switchTo().frame(calFrame)。在iFrame裡操作完畢後,記得再切換會原來的視窗WebDriver.switchTo().defaultContent()

複選框

複選框是非常常見的網頁頁面元素,操作起來也非常簡單,findElement找到複選框元素,再使用普通的.click()方式即可選中或不選中這個checkbox。checkbox.isSelected()則可以檢視該複選框是否被選中。

我自己在操作的過程中遇到一個問題,明明這個元素是可以點選的,有onclick屬性,但是ChromeDriver提示說這個元素unclickable…百思不得其解,最後切換回FirefoxDriver,一切正常,可以操作= =#

另外,測試過程中如果要用到Chrome的話,除了要預先安裝好Chrome瀏覽器,還需要下載ChromeDriver,官方下載地址如下:
http://chromedriver.storage.googleapis.com/index.html?path=2.16/
下載下來之後放哪裡都無所謂其實,只要在程式裡設定一下它的路徑就可以正常使用了

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<WebElement> 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頁面及程式執行結果截圖

這裡寫圖片描述

這裡寫圖片描述

相關推薦

Selenium_WebDriver操作iFrame日曆_Java

iFrame日曆框 頁面上遇到iFrame元素時,先用findElement找到這個iFrame元素,然後再WebDriver.switchTo().frame(calFrame)。在iFrame裡操作完畢後,記得再切換會原來的視窗WebDriver.swit

jQuery獲取Select選擇的Text(文字資訊) Value屬性的值,select語法解釋;單

地址:http://www.cnblogs.com/yaoshiyou/archive/2010/08/24/1806939.html  jQuery獲取Select選擇的Text和Value: 語法解釋: 1. $("#select_id").change(function(){

【2018.05.14】python3.6+selenium 單

下面是一個單選框和複選框的HTML檔案 <html> <head> <title>"X box 單選"</title> </head> <body> &l

struts2動態下拉取值

下拉框取值    action 程式碼: //得到下拉框的list值,並傳入頁面 public String execute() throws Exception     {         ActionContext context=ActionContext.getCo

【基於Python的Selenium2自動化測試】07 - 定位單

文章目錄 7.1 認識一下單選框和複選框 7.2 勾選單選框 7.3 勾選複選框 7.3.1 勾選單個複選框 7.3.2 勾選全部複選框 7.4 判斷選中與否的狀態

【QT】:QT中的單的使用

QT中的複選框和單選框的使用跟MFC中的相同控制元件的使用是有所不同的,QT中的控制元件的使用涵蓋了更加高階的功能。 MFC中可以通過組這個功能手動的把多個控制元件組合在一起,而QT中是不能如此簡單的做到這個功能的,需要建組。 建組的方式如下: 在.h檔案

radio的案例

<tr>                <td>性別</td>     &

編輯,單,勾相關操作

編輯框的一些操作 用clear方法清除該元素裡面的字串 #輸入框開啟的時候,已經有內容了 input1.clear() 獲取input元素裡面輸入的文字內容 #獲取輸入框裡面已經有的內容 input1.get_attrib

javascrip下拉的一些操作

下拉框的一些基本操作 //1.獲取下拉框的值 var radioValue = $("#radio option:selected").val(); //2.將下拉框中的某個值設定為選中狀態 $("#opt option").each(function(){ if($(this).va

關於單、下拉的資料回顯問題以及全全不

在列表顯示的介面中通常都有編輯操作,進行編輯操作時通常就牽涉到資料的回顯問題,本文中編輯介面和新增介面是在同一個介面。 頁面中使用了jstl中的c標籤,所以要先引用: <%@ taglib prefix="c" uri="http://java.sun.com/js

使用css美化單(radio)(checkbox)的樣式

//html <label> <input name="checkbox" class="checkbox" type="checkbox"/> <s>

jsjQuery分別實現 單、下拉列表的表單驗證

關於頁面表單驗證:一些簡單的理解單選框/複選框:js程式碼:$(function () { $("#Button").click(function () {var love = document.getElementsByName("love"); for(var i

MFC介面程式設計基礎(12):組、單按鈕

上一篇:MFC介面程式設計基礎(11):靜態文字框、命令按鈕和編輯框 下一篇:MFC介面程式設計基礎(13):列表框和組合框 組框、單選按鈕和複選框都是對話方塊的常見控制元件。組框與靜態文字框一樣是CStatic類

Android中的 單按鈕

在Adnroid中,單選按鈕和複選框都繼承了普通按鈕。因此它們都可以使用普通按鈕支援的各種屬性和方法。不同的是,它們提供了可以選中的功能,下面是對單選按鈕的和複選框的進行詳細的介紹。 在Andro

對於單radiocheckbox的使用

1,使用 <input type="checkbox" name="diff" id="diff" value="1"/>//複選 //預設選中可以新增checked屬性 <input type="checkbox" name="diff" id="

.html(),.text().val()的使用,獲取單選中的值

本節內容主要介紹的是如何使用jQuery中的.html(),.text()和.val()三種方法,用於讀取,修改元素的html結構,元素的文字內容,以及表單元素的value值的方法。jQuery中 為我們提供了多種方法用於對元素的HTML結構和元素的文字內容的操作,比如說

10個HTML5美化版

單選框和複選框在網頁中也十分常見,雖然它沒有按鈕的互動性強,但是如果能把它們像按鈕那樣美化一下,那也是非常不錯的。本文收集了10個相對比較漂亮的美化版單選框和複選框,希望你會喜歡。 1、CSS3漂亮的自定義Checkbox複選框 9款迷人樣式 之前我們分享過一款非

使用 CSS 修改 HTML 預設單(radio)(checkbox)樣式(網頁版)

HTML 預設的單選和複選框有多醜大家都是有目共睹,所以我們UI設計的小哥哥小姐姐們在設計時候,為了美觀經常會設計一些漂亮的單選或者複選框,這就要求我們前端開發童鞋必須去修改HTML單選複選框的預設樣式,當然修改的方式有很多種,我在這裡展示的是如何用CSS來修改

QTableView實現行

');" > 其中SelectionBehavior設定成SelectRows行選 showGrid設定成false,不顯示錶格 sortingEnabled設定成true,支援排序。(據說這個功能需要實現sort方法或者使用ProxyModel,還沒有具體實驗) --

checkbox文字的間距設定

 原有的設定 在xml中                        <CheckBox              android:id="@+id/login_remenber_pwd"             android:layout_width="wrap