使用selenium从日历中选择日期

时间:2016-05-05 06:39:46

标签: html selenium-webdriver calendar html-table

我想从日历中选择任何日期来测试某个应用程序。

我在这里找不到表格或tr或td元素。

我想我可以获得表格分区,但不能超越这个。

这是我的解决方案

public String findElementInTable(WebDriver driver,String elementXpath) {
        WebElement select2Element = driver.findElement(By.xpath(elementXpath));
        select2Element.click();

        WebElement datepicker = driver.findElement(By.xpath("//div[@class='period_picker_days']/table"));
        List<WebElement> rows_table = datepicker.findElements(By.tagName("tr"));
        int rows_count = rows_table.size();
        // Loop will execute till the last row of table.
        for (int row = 0; row < rows_count; row++) {
            // To locate columns(cells) of that specific row.
            List<WebElement> Columns_row = rows_table.get(row).findElements(By.tagName("td"));
            // To calculate no of columns(cells) In that specific row.
            int columns_count = Columns_row.size();
            // Loop will execute till the last cell of that specific row.
            for (int column = 0; column < columns_count; column++) {
                // To retrieve text from that specific cell.
                if (Columns_row.get(column).getText().equals(name)) {
                    String celtext = Columns_row.get(column + 2).getText();
                    System.out.println("Cell Value Of row number " + row + " and column number " + (column) + " Is "
                            + celtext);
                    return Columns_row.get((column + 2)).getText();
                }
            }
        }
        return null;
    }

以下是日历的详细html片段

<div class="ParkingWidgetParkingLanding period_picker_box xdsoft_noselect animation xdsoft_norange visible active periodpickerstart" style="left: 487.467px; top: 857px; width: 511px; height: 294px;" unselectable="on">
<div class="period_picker_head">
<div class="period_picker_work">
<div class="period_picker_days">
<a class="periodpicker_btn_prev" href="#">Prev</a>
<table>
<tbody>
<tr>
<td class="period_picker_month5 periodpicker_table_container">
<table>
<tbody>
<tr>
<th class="period_picker_month" title="May 2016" colspan="7" data-dateend="2016/05/31" data-datestart="2016/05/1">May 2016</th>
</tr>
<tr class="period_picker_first_letters_tr">
<th class="period_picker_holiday">Sun</th>
<th class="">Mon</th>
<th class="">Tue</th>
<th class="">Wed</th>
<th class="">Thu</th>
<th class="">Fri</th>
<th class="period_picker_holiday">Sat</th>
</tr>
<tr>
<td class="period_picker_gray_period">1</td>
<td class="period_picker_gray_period">2</td>
<td class="period_picker_gray_period">3</td>
<td class="period_picker_gray_period">4</td>
<td class="period_picker_cell period_picker_weekday" data-date="2016/05/5">5</td>
<td class="period_picker_cell period_picker_weekday" data-date="2016/05/6">6</td>
<td class="period_picker_cell period_picker_holiday period_picker_last_cell" data-date="2016/05/7">7</td>
</tr>
<tr>
<tr>
<tr>
<tr>
</tbody>
</table>
</td>
<td class="period_picker_month6 periodpicker_table_container">
<table>

2 个答案:

答案 0 :(得分:0)

嗨,请按照下面的说法进行操作(根据提供的html源代码回答)

List<WebElement> dates = driver.findElements(By.xpath("//*[@class='period_picker_month5 periodpicker_table_container']/table/tbody/tr[3]/td"));
        // for printing every date 
        // and selecting a date form the calender 
        String MyDate = "6";
        for (int j = 0; j < dates.size(); j++) {
            String date = dates.get(j).getText(); 
            System.out.println(date);
            if(dates.get(j).getText().equals(MyDate)){
                dates.get(j).click();
                break;
            }
        }

答案 1 :(得分:0)

首次使用此日期//html/body/div/div/div/div/table/tbody/tr/td/table/tbody/tr[3]/td[1]

你也可以下载xpath finder,这是mozzila插件,我觉得它有很多帮助。

当您安装它时,只需右键单击元素,选择Xiew xpath-&gt;它将显示元素的xpath。