Selenium webdriver 从日历中选择一天-日期选择器-基于今天的量角器';日期

Selenium webdriver 从日历中选择一天-日期选择器-基于今天的量角器';日期,selenium-webdriver,webdriver,protractor,Selenium Webdriver,Webdriver,Protractor,我们有一个基于引导日期选择器的日历。我试图选择一个特定的日子,比如说,sysdate或sydate-2或sysdate-3。我遇到的一种方法是使用findElements并在列表中循环,直到其中一个元素将当前日期与equalsIgnoreCase匹配 但我想在JS中实现这一点,以便在我的量角器测试用例中使用 下表结构如下: <tbody> <tr> <td class="day old disabled">30</td>

我们有一个基于引导日期选择器的日历。我试图选择一个特定的日子,比如说,sysdate或sydate-2或sysdate-3。我遇到的一种方法是使用
findElements
并在
列表中循环,直到其中一个元素将当前日期与
equalsIgnoreCase
匹配

但我想在JS中实现这一点,以便在我的量角器测试用例中使用

下表结构如下:

<tbody>
    <tr>
        <td class="day old disabled">30</td>
        <td class="day old disabled">31</td>
        <td class="day disabled">1</td>
        <td class="day disabled">2</td>
        <td class="day disabled">3</td>
        <td class="day disabled">4</td>
        <td class="day disabled">5</td>
    </tr>
    <tr>
        <td class="day disabled">6</td>
        <td class="day disabled">7</td>
        <td class="day">8</td>
        <td class="day">9</td>
        <td class="day">10</td>
        <td class="day active today">11</td>
        <td class="day disabled">12</td>
    </tr>
    <tr>
        <td class="day disabled">13</td>
        <td class="day disabled">14</td>
        <td class="day disabled">15</td>
        <td class="day disabled">16</td>
        <td class="day disabled">17</td>
        <td class="day disabled">18</td>
        <td class="day disabled">19</td>
    </tr>
    <tr>
        <td class="day disabled">20</td>
        <td class="day disabled">21</td>
        <td class="day disabled">22</td>
        <td class="day disabled">23</td>
        <td class="day disabled">24</td>
        <td class="day disabled">25</td>
        <td class="day disabled">26</td>
    </tr>
    <tr>
        <td class="day disabled">27</td>
        <td class="day disabled">28</td>
        <td class="day disabled">29</td>
        <td class="day disabled">30</td>
        <td class="day new disabled">1</td>
        <td class="day new disabled">2</td>
        <td class="day new disabled">3</td>
    </tr>
    <tr>
        <td class="day new disabled">4</td>
        <td class="day new disabled">5</td>
        <td class="day new disabled">6</td>
        <td class="day new disabled">7</td>
        <td class="day new disabled">8</td>
        <td class="day new disabled">9</td>
        <td class="day new disabled">10</td>
    </tr>
</tbody>

30
31
1.
2.
3.
4.
5.
6.
7.
8.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1.
2.
3.
4.
5.
6.
7.
8.
9
10

我最喜欢的方法是手动输入日期,就像使用量角器在输入div中输入日期一样,而不是单击很多东西,使事情变得复杂

假设您的输入div被直接输入禁用(也就是说,它有一个禁用的属性),您可以使用普通javascript删除禁用的属性,如下所示:

 browser.executeScript('document.getElementsByName("dob0")[0].removeAttribute("disabled")');
 var date1 = 11 + '/' + 23 + '/' + 1994;
 dob.sendKeys(date1);
 browser.executeScript('document.getElementsByName("dob0")[0].setAttribute("disabled","disabled");');  

如果您想输入今天的日期,我建议您使用

我最喜欢的方法是手动输入日期,就像使用量角器在输入div中输入日期一样,而不是单击很多东西,使事情变得复杂

假设您的输入div被直接输入禁用(也就是说,它有一个禁用的属性),您可以使用普通javascript删除禁用的属性,如下所示:

 browser.executeScript('document.getElementsByName("dob0")[0].removeAttribute("disabled")');
 var date1 = 11 + '/' + 23 + '/' + 1994;
 dob.sendKeys(date1);
 browser.executeScript('document.getElementsByName("dob0")[0].setAttribute("disabled","disabled");');  

如果您想输入今天的日期,我建议您使用

而不是循环所有
td
元素,您只需创建一个通用xpath或使用
by.cssContainingText()
即可实现。谢谢,@SudharsanSelvaraj!使用
cssContainingText
<代码>元素(by.cssContainingText('.day',昨天))。单击()很高兴它成功了:)您不必遍历所有
td
元素,只需创建一个通用xpath或使用
by.cssContainingText()
即可实现此目的。谢谢,@sudharsansevaraj!使用
cssContainingText
<代码>元素(by.cssContainingText('.day',昨天))。单击()很高兴成功:)手动输入日期已被禁用。但正如@Sudharsan所提到的,将与cssContainingTex()一起使用。手动输入日期已被禁用。但正如@Sudharsan所提到的,它将与cssContainingTex()一起工作。