Selenium webdriver c# - 无法单击()元素(元素不为null)

时间:2013-09-24 09:31:03

标签: c# ajax xpath selenium webdriver

我似乎在点击一个由ajax填充的框内的元素时遇到问题。

所以我所在的网页上有一个链接,点击它时会调用一个javascript函数,然后在页面中插入一个新的div,里面装满了新的内容。

现在奇怪的是我可以使用xpath找到此框中的元素没问题,我甚至可以读取它的值但是!我不能使用Click();在盒子内的链接上,事件由于某种原因不会起作用。

有没有人遇到过类似的问题并且知道如何解决问题?

我正在使用Selenium webdriver 2.35和Firefox 23

 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有关,我认为它从显示开始:无并且被改变,这会影响它吗?

我认为它是动态添加它但可能不是!

1 个答案:

答案 0 :(得分: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();