当我使用 Selenium IDE 时,WebDriver 无法找到相同 css 工作正常的 WebElement

WebDriver is not able to find out WebElement where as same css works fine when I use Selenium IDE

我正在使用 Firefox WebDriver,但在我的测试中由于某种原因无法找到 Link/Image WebElement。

当我将 Selenium IDE 与相同的 CSS(不适用于 WebDriver)一起使用时,它工作得很好。

任何人都可以建议我在使用 WebDriver 时必须在 xpath 中对 CSS 选择器进行哪些更改吗?我不知道我在这里错过了什么。

我的 HTML 页面代码如下所示: 我想点击 "New" link/image.

<div id="toolbarcontainer">
<ul id="toolbarlist">
    <li>
        <a id="btnNewDashboard" title="New" onclick="javascript:$('#dialogAddTab').dialog('open'); return false;" href="#">
            <span class="toolbarlistimg"></span>
            <span class="toolbarlisttext"></span>
        </a>
    </li>
    <li></li>
    <li></li>
</ul> </div>

使用 Selenium IDE 使用以下代码可以正常录制和播放:

<tr> <td>click</td> <td>css=span.toolbarlisttext</td> <td></td> </tr>

但是当我在测试中使用下面的代码时,它不起作用...我尝试了以下 - 请建议

driver.findElement(By.cssSelector("span.toolbarlisttext")).click();
driver.findElement(By.className("toolbarlisttext")).click();
driver.findElement(By.xpath("//a/span[@class='toolbarlisttext']")).click();
driver.findElement(By.xpath("css=span.toolbarlisttext")).click();

谢谢,

更新:2015 年 1 月 2 日

新的button/link居然在iFrame下,我完全无视iFrame。之后我可以点击新建 link。答案在下面。

我认为您需要在此处定位 a 标记:

driver.findElement(By.id("btnNewDashboard")).click();

或者,使用 By.cssSelector:

driver.findElement(By.cssSelector("a#btnNewDashboard")).click();

我的一个朋友意识到 "New" link/img 在 iF​​rame 中,因为它在 iFrame 中,我们必须先将焦点切换到 iFrame,然后单击元素。

示例代码:

// Switch the focus to iFrame first
driver.switchTo().frame(driver.findElement(By.xpath("//*[@id='Framework_Client_BusinessIntelligence_0']/iframe")));
// Click on Link/Button/Image present in iFrame
driver.findElement(By.xpath("//*[@id='btnNewDashboard']")).click();

谢谢,

你试过了吗?

driver.findElement(By.cssSelector("#toolbarlist > #btnNewDashboard > .toolbarlisttext")).click();