当我使用 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 在 iFrame 中,因为它在 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();
我正在使用 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 在 iFrame 中,因为它在 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();