0

我在用着http://www.makemytrip.com/

以下是Html 代码

<div class="mrgnBot30 clearFix">
<span class="watch_icn flL"></span>
<div class="widget_inner clearFix suggest_me padBot15 flL">
<h3 class="clearFix hasBorderBottom">
<p class="clearFix checkDates">
<span class="check_date flL">
<label for="checkInDate">
Check-in Date:&nbsp;
<span id="checkInDate_day" class="dayLight">(Monday)</span>
</label>
<a id="checkInDateControl" class="cal_icn flL" href="#" tabindex="201"></a>
<input id="checkInDate" class="day flL hasDatepicker" type="text"  autocomplete="false"     value="01/21/2013"     name="searchCriteria.criterion.stayDateRanges[0].start" style="display: none;">
<span class="day date flL">
<select class="selectBox" tabindex="202" style="display: none;">
<span class="left_part flL"></span>
<span class="selectBox center_part flL selectBox-dropdown" style="display: inline-block; -moz-user-select: none;" title="" tabindex="202">
<span class="selectBox-label">21</span>
<span class="selectBox-arrow controls flR">
<a class="select_drop_icon flR" onclick="return false;" href="#"></a>
</span>
</span>
<span class="right_part flL"></span>
</span>
<span class="day month flL">
<select class="selectBox" tabindex="203" style="display: none;">
<span class="left_part flL"></span>
<span class="selectBox center_part flL selectBox-dropdown" style="display: inline-block; -moz-user-select: none;" title="" tabindex="203">
<span class="selectBox-label">Jan,13</span>
<span class="selectBox-arrow controls flR">
<a class="select_drop_icon flR" onclick="return false;" href="#"></a>
</span>
</span>
<span class="right_part flL"></span>
</span>
</span>
<span class="check_date last flL">
<span id="nights" class="nights flL">2 Night(s)</span>
</p>
</div>
</div>

在这里,我有一个下拉列表来选择 aCheck in dateCheck out date。坦率地说,我不知道如何从代码中选择下拉列表的值。此外,我不确定天气是否是下拉菜单。为什么我说的意思是在 selenium IDE 中记录时它记录为click从下拉列表中选择值的事件。

我尝试select声明通过使用捕获 xpath 值从下拉列表中选择一个值firebug

使用的代码

 driver.get("http://www.makemytrip.com/");
 driver.findElement(By.xpath("//li[4]/a/span/span")).click();
    Select sel = new Select(driver.findElement(By
            .xpath("//div[2]/div/p/span/span/span[2]")));
    try {
        sel.selectByValue("21");
    } catch (Exception e) {
        e.printStackTrace();
    }

没有任何效果。下面是录制后从 selenium IDE 转换的代码。

塞勒内斯代码:

driver.get("http://www.makemytrip.com/");
driver.findElement(By.xpath("//div[@id='chf_navigation']/ul/li[4]/a/span/span")).click();
assertEquals("I want to go to", driver.findElement(By.cssSelector("label")).getText());
assertEquals("Online Hotel Booking for Cheap, Budget & Luxury Hotels in India | MakeMyTrip.com", driver.getTitle());
driver.findElement(By.xpath("(//a[@onclick='return false;'])[2]")).click();
driver.findElement(By.xpath("(//a[@onclick='return false;'])[3]")).click();
driver.findElement(By.xpath("(//a[@onclick='return false;'])[4]")).click();
driver.findElement(By.cssSelector("li.selectBox-hover.selectBox-selected > a")).click();
driver.findElement(By.xpath("(//a[@onclick='return false;'])[5]")).click();

查看下拉菜单的步骤:

  1. 打开http://www.makemytrip.com/
  2. 点击酒店链接
  3. 你可以看到Check in Date下拉菜单。

请提供有用的建议来解决问题。提前致谢。

4

2 回答 2

0

签入日期选择 ID 是b_checkin_day&& b_checkin_month。以下是如何选择它们

//select the check-in date <select> element
Element el = driver.findElement(By.id('b_checkin_day'));
Select sel = new Select(el)
// go on with selection

签出选择ID是:b_checkout_day&&b_checkout_month

那是针对美国版的。印度版本绝对不是一个选择,但不对应于您的 html

编辑:发现你在谈论阿联酋网站。

对于日期选择,您应该选择:

Element el = driver.findElement(By.xpath("//input[@id='checkInDate']/following-sibling::span[contains(@class,'date')]/select"))

xpaths 分别用于月份签入、日结帐和月结帐

"//input[@id='checkInDate']/following-sibling::span[contains(@class,'month')]/select"
"//input[@id='checkOutDate']/following-sibling::span[contains(@class,'day')]/select"
"//input[@id='checkOutDate']/following-sibling::span[contains(@class,'month')]/select"

您的第一个解决方案是使用这些 xpath 来选择正确的值

您还可以更简单地检查用于填写表格的输入中的正确日期,即将正确的日期设置为

<input id="checkInDate" class="day flL hasDatepicker" type="text"  autocomplete="false"     value="01/21/2013"     name="searchCriteria.criterion.stayDateRanges[0].start" style="display: none;">

应该做的伎俩。(注意value="01/21/2013"

编辑2:

您是否尝试过使用访问者使用的实际元素来做到这一点?首先,单击下拉箭头 ( "//input[@id='checkInDate']/following-sibling::span[contains(@class,'date')]/"),它将使 javascript 日期选择器使用的选择可见。然后,您应该能够在单击时做出正确的选择: //ul[contains(@class,'selectBox-dropdown') and contains(@style,'block')]//a[@rel="25"]

如果 25 是你想要的那一天。<ul>s/<li>s用于进行选择的位于页面底部。查看它们,您会找到正确的 xpath

于 2013-01-18T13:32:41.330 回答
0

您已经提供了 html 代码,但您没有向我们提供您编写的代码,请提供您为此程序编写的代码,并让我们知道显示的错误消息或异常。

于 2013-01-18T11:55:27.327 回答