如何从Selenium-java中的JavaScript弹出式日历中选择日期

阿迪蒂亚

如何使用selenium-java从javascipt弹出式日历中选择日期。日历在新窗口中打开。以下代码被硬编码为选择日期17/11/2016

// Store the current window handle
String winHandleBefore = driver.getWindowHandle();

// Perform the click operation that opens new window
// Click on calendar icon
driver.findElement(By.xpath(".//*[@id='frm']/table/tbody/tr[5]/td[2]/label/a/img")).click();

// Switch to new window opened
for(String winHandle : driver.getWindowHandles()){
    driver.switchTo().window(winHandle);
}

// Perform the actions on new window
// Click on date 17/11/2016
driver.findElement(By.xpath("html/body/table/tbody/tr/td/table/tbody/tr[5]/td[5]/span/a")).click();


// Close the new window, if that window no more required
driver.close();

// Switch back to original browser (first window)
driver.switchTo().window(winHandleBefore);

我想将日期作为字符串&从日历中自动选择。如何更改代码以使其成为选择任何以字符串形式给出的日期的通用功能。日历图片已添加到此处。

在此处输入图片说明

日历的html代码是

<table align="center" bgcolor="#333333" border="0" cellpadding="1" cellspacing="0"><tbody><tr><td>
    <table border="0" cellpadding="3" cellspacing="1"><tbody>
    <tr align="center" bgcolor="#cccccc"><td colspan="7"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr align="center" valign="middle"><td><span class="title"><b><a class="titlea" href="javascript:if(window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.moveYear) window.opener.moveYear(-1)">&nbsp;«</a>&nbsp;<a class="titlea" href="javascript:if (window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.prepMonth) window.opener.prepMonth(10)">‹&nbsp;</a></b></span></td><td width="90"><nobr><b><span class="title">November 2016</span></b></nobr></td><td><span class="title"><b><a class="titlea" href="javascript:if (window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.nextMonth) window.opener.nextMonth(10)">&nbsp;›</a>&nbsp;<a class="titlea" href="javascript:if(window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.moveYear) window.opener.moveYear(1)">»&nbsp;</a></b></span></td></tr></tbody></table></td></tr>
    <tr align="center" bgcolor="#cccccc"><td width="15"><span class="days">S</span></td><td width="15"><span class="days">M</span></td><td width="15"><span class="days">T</span></td><td width="15"><span class="days">W</span></td><td width="15"><span class="days">T</span></td><td width="15"><span class="days">F</span></td><td width="15"><span class="days">S</span></td></tr>
    <tr align="center" bgcolor="#ffffff"><td><span class="day">&nbsp;</span></td><td><span class="day">&nbsp;</span></td><td bgcolor="#ffffff"><span class="day"><a class="daya" href="javascript: if (window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.pickDate) window.opener.pickDate(1)">1</a></span></td><td bgcolor="#ffffff"><span class="day"><a class="daya" href="javascript: if (window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.pickDate) window.opener.pickDate(2)">2</a></span></td><td bgcolor="#ffffff"><span class="day"><a class="daya" href="javascript: if (window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.pickDate) window.opener.pickDate(3)">3</a></span></td><td bgcolor="#ffffff"><span class="day"><a class="daya" href="javascript: if (window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.pickDate) window.opener.pickDate(4)">4</a></span></td><td bgcolor="#ffffff"><span class="day"><a class="daya" href="javascript: if (window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.pickDate) window.opener.pickDate(5)">5</a></span></td></tr>
    <tr align="center" bgcolor="#ffffff"><td bgcolor="#ffffff"><span class="day"><a class="daya" href="javascript: if (window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.pickDate) window.opener.pickDate(6)">6</a></span></td><td bgcolor="#ffffff"><span class="day"><a class="daya" href="javascript: if (window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.pickDate) window.opener.pickDate(7)">7</a></span></td><td bgcolor="#ffffff"><span class="day"><a class="daya" href="javascript: if (window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.pickDate) window.opener.pickDate(8)">8</a></span></td><td bgcolor="#ffffff"><span class="day"><a class="daya" href="javascript: if (window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.pickDate) window.opener.pickDate(9)">9</a></span></td><td bgcolor="#ffffff"><span class="day"><a class="daya" href="javascript: if (window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.pickDate) window.opener.pickDate(10)">10</a></span></td><td bgcolor="#ffffff"><span class="day"><a class="daya" href="javascript: if (window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.pickDate) window.opener.pickDate(11)">11</a></span></td><td bgcolor="#ffffff"><span class="day"><a class="daya" href="javascript: if (window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.pickDate) window.opener.pickDate(12)">12</a></span></td></tr>
    <tr align="center" bgcolor="#ffffff"><td bgcolor="#ffffff"><span class="day"><a class="daya" href="javascript: if (window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.pickDate) window.opener.pickDate(13)">13</a></span></td><td bgcolor="#ffffff"><span class="day"><a class="daya" href="javascript: if (window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.pickDate) window.opener.pickDate(14)">14</a></span></td><td bgcolor="#ffffff"><span class="day"><a class="daya" href="javascript: if (window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.pickDate) window.opener.pickDate(15)">15</a></span></td><td bgcolor="#ffffff"><span class="day"><a class="daya" href="javascript: if (window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.pickDate) window.opener.pickDate(16)">16</a></span></td><td bgcolor="#ffffff"><span class="day"><a class="daya" href="javascript: if (window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.pickDate) window.opener.pickDate(17)">17</a></span></td><td bgcolor="#ffffff"><span class="day"><a class="daya" href="javascript: if (window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.pickDate) window.opener.pickDate(18)">18</a></span></td><td bgcolor="#ffffff"><span class="day"><a class="daya" href="javascript: if (window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.pickDate) window.opener.pickDate(19)">19</a></span></td></tr>
    <tr align="center" bgcolor="#ffffff"><td bgcolor="#ffffff"><span class="day"><a class="daya" href="javascript: if (window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.pickDate) window.opener.pickDate(20)">20</a></span></td><td bgcolor="#ffffff"><span class="day"><a class="daya" href="javascript: if (window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.pickDate) window.opener.pickDate(21)">21</a></span></td><td bgcolor="#ffffff"><span class="day"><a class="daya" href="javascript: if (window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.pickDate) window.opener.pickDate(22)">22</a></span></td><td bgcolor="#ffffff"><span class="day"><a class="daya" href="javascript: if (window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.pickDate) window.opener.pickDate(23)">23</a></span></td><td bgcolor="#333333"><span class="currentDay"><a class="currenta" href="javascript: if (window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.pickDate) window.opener.pickDate(24)">24</a></span></td><td bgcolor="#ffffff"><span class="day"><a class="daya" href="javascript: if (window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.pickDate) window.opener.pickDate(25)">25</a></span></td><td bgcolor="#ffffff"><span class="day"><a class="daya" href="javascript: if (window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.pickDate) window.opener.pickDate(26)">26</a></span></td></tr>
    <tr align="center" bgcolor="#ffffff"><td bgcolor="#ffffff"><span class="day"><a class="daya" href="javascript: if (window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.pickDate) window.opener.pickDate(27)">27</a></span></td><td bgcolor="#ffffff"><span class="day"><a class="daya" href="javascript: if (window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.pickDate) window.opener.pickDate(28)">28</a></span></td><td bgcolor="#ffffff"><span class="day"><a class="daya" href="javascript: if (window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.pickDate) window.opener.pickDate(29)">29</a></span></td><td bgcolor="#ffffff"><span class="day"><a class="daya" href="javascript: if (window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.pickDate) window.opener.pickDate(30)">30</a></span></td><td><span class="day">&nbsp;</span></td><td><span class="day">&nbsp;</span></td><td><span class="day">&nbsp;</span></td></tr>
    <tr align="center" bgcolor="#ffffff"><td><span class="day">&nbsp;</span></td><td><span class="day">&nbsp;</span></td><td><span class="day">&nbsp;</span></td><td><span class="day">&nbsp;</span></td><td><span class="day">&nbsp;</span></td><td><span class="day">&nbsp;</span></td><td><span class="day">&nbsp;</span></td></tr>
    <tr bgcolor="#cccccc"><td colspan="7" align="center"><span class="foot"><b><a class="foota" href="javascript:if (window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.hideCal) window.opener.hideCal()">[close]</a>&nbsp;&nbsp;<a class="foota" href="javascript:if (window.opener &amp;&amp; !window.opener.closed &amp;&amp; window.opener.clearDate) window.opener.clearDate()">[clear]</a></b></span></td></tr>
    </tbody></table>
</td></tr></tbody></table>
阿迪蒂亚

 前/后的符号,所以我需要把一个空间(在linktext的)基于前/后&nbsp;HTML代码

public void selectDate(WebDriver driver, String format){
    //1) Initialize variables
    String curr[] = getCurrentDate("dd/MM/yyyy").split("/");
    String req[] = format.split("/");

    int currDate = Integer.parseInt(curr[0]);
    int reqDate = Integer.parseInt(req[0]);

    int currMonth = Integer.parseInt(curr[1]);
    int reqMonth = Integer.parseInt(req[1]);

    int currYr = Integer.parseInt(curr[2]);
    int reqYr = Integer.parseInt(req[2]);

    //2) Select required year
    if (currYr > reqYr){
        for (int i=0;i<(currYr-reqYr);i++){
            //decrease year
            driver.findElement(By.linkText(" «")).click();
        }   
    } else if (currYr < reqYr){
        for (int j=0;j<(reqYr-currYr);j++){
            //increase year
            driver.findElement(By.linkText("» ")).click();
        }
    }

    //3) Select required month
    if (currMonth > reqMonth){
        for (int i=0;i<(currMonth-reqMonth);i++){
            //decrease month
            driver.findElement(By.linkText("‹ ")).click();
        }
    } else if (currMonth < reqMonth){
        for (int j=0;j<(reqMonth-currMonth);j++){
            // increase month
            driver.findElement(By.linkText(" ›")).click();
        }
    }

    //4) Select required date
    driver.findElement(By.linkText(String.valueOf(reqDate))).click();
}

public static String getCurrentDate(String format)
{
    Calendar cal = Calendar.getInstance();
    Date date = cal.getTime();
    SimpleDateFormat sdf = new SimpleDateFormat(format);
    return sdf.format(date);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Selenium:从日历中选择日期

如何在Eclipse中使用硒路径从日历弹出窗口中选择日期

Selenium 从日历中选择日期 - 无法找到 x 路径

使用Selenium和Python从日历中选择日期范围

如何使用文本框中的日期值从日历中选择日期

用户在iOS中选择日期时如何关闭日历

无法从 Selenium JAVA 中的 jquery datepicker 日期范围选择器中选择日期范围

Python Selenium在日历中选择日期作为开始日期和结束日期

如何在Eclipse中控制弹出式Java执行

如何从HTML下方的弹出式下拉菜单中选择值

如何从Google Forms弹出式下拉列表中选择一个选项Puppeteer NodeJS

如何在python中选择一个弹出式窗口?

如何从弹出窗口中两个月的makemytrip中选择日期

如何在Selenium WebDriver中选择日期选择器

如何在CalendarView中选择日期

如何在硒python中的jQuery日期时间选择器中选择日期

如何在R中一列中的几个相似日期中选择日期

按住MacBook中的键时如何关闭弹出式选择菜单

如何在Python上使用Selenium选择日期范围?

如何使用硒webdriver的日历选择日期

使用showTime选择日期后如何隐藏PrimeNG日历

如何从日期时间列中选择日期?

如何从弹出式窗口自身中消除弹出式窗口?

如何从引导程序中的弹出式窗口中获取弹出式窗口

如何从 Selenium Webdriver 的 ng-model datepicker 中定位和选择日期?

从日期和时间选择器中选择日期和时间后,如何在日历的“创建事件”功能中将它们作为参数传递?

在Ext JS 3.4中选择日期后如何停止关闭datepicker

如何在Python Pandas DataFrame中选择日期在索引中的行?

选择日期后如何防止弹出窗口关闭?