程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Selenium_WebDriver操作iFrame日歷框和復選框_Java

Selenium_WebDriver操作iFrame日歷框和復選框_Java

編輯:C++入門知識

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 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
,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頁面及程序運行結果截圖

這裡寫圖片描述

這裡寫圖片描述

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved