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>

ここでは、とを選択するためのドロップダウンがCheck in dateありますCheck out date。率直に言って、コードからドロップダウンの値を選択する方法がわかりません。さらに、天気がドロップダウンかどうかはわかりません。セレン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();
    }

何も機能しません。以下は、記録後にセレン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"))

月のチェックイン、日のチェックアウト、月のチェックアウトの xpath はそれぞれ次のとおりです。

"//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")

EDIT2:

訪問者が使用する実際の要素でそれを試みましたか? まず、ドロップダウン矢印 ( "//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 に答える