0

ajax で満たされたボックス内の要素をクリックする際に問題が発生しているようです。

したがって、私がいるWebページにはリンクがあり、クリックするとjavascript関数が呼び出され、新しいコンテンツでいっぱいのページに新しいdivが挿入されます。

ここで奇妙なことに、xpath を使用してこのボックス内の要素を問題なく見つけることができ、その値を読み取ることさえできます。Click(); を使用できません。ボックス内のリンクでは、何らかの理由でイベントが機能しません。

誰かが同様の問題に直面し、回避策を知っていますか?

Firefox 23 で Selenium webdriver 2.35 を使用しています

 More Info

クリックしたリンクの HTML は、JS を呼び出して div を表示します。

<center>
    <a id="link_fleet_move_here" href="">Move fleet here</a>
</center>
<br>
<script>
    $("#link_fleet_move_here").click( function(event) { event.preventDefault(); load_fleet_move_to_destination("fleet.aspx?method=ajax&view=move_to_destination&version=1&player=111&destination=LZLOCATION"); $("#link_fleet_move_here").hide();} )
</script>
<center>
<div id="fleetLoaderTemplate" style="display:none">
<div id="fleetLoaderErrorTemplate" style="display:none">
</center>
<div id="move_to_destination_container"></div>

イベントが新しい HTML の読み込みを終了すると、

<div id="move_to_destination_container">
    <ajax>
        <table width="600" align="center">
        BIG TABLE FULL OF CONTENT
        <td sorttable_customkey="LZLOCATION">
            <a href="map.aspx?loc=LZLOCATION">(LZLOCATION)</a>
        </td>
        <td sorttable_customkey=""></td>
        <td sorttable_customkey=""></td>
        <td>
            <a href="fleet.aspx?fleet=&view=move&destination=AnotherLocation">Move</a>
        </td>
        <table>
    <br>
    </ajax>
</div>

セレクター

location = driver.FindElement(By.XPath("//a[contains(@href, '" + LZLocation + "')]/following::td[3]"));
location.Click();

実際にはそのdivと関係があると思います.Display:Noneとして始まり、変更されると思います.これは影響しますか?

動的に追加していると思いましたが、そうではないかもしれません!

4

1 に答える 1

1

次の方法で要素を選択してみてください。

driver.findElement(By.cssSelector("#move_to_destination_container a[href^='fleet']")).click();

エラーがスローされる場合は、次を使用してみてください。

new WebDriverWait(driver, 10).until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("#move_to_destination_container a[href^='fleet']"))).click();
于 2013-09-24T18:38:23.113 に答える