Selenium:无法点击课程和图片

时间:2012-10-30 22:14:09

标签: testing selenium selenium-webdriver xpath

我正在使用Selenium网络驱动程序并尝试点击搜索图片而无法点击此图片。我不确定出了什么问题。我试过了

xpath选项

driver.findElement(By.xpath("//form/div/div/div/div/div[2]/table/tbody/tr/td[2][@class='icon-button combo-button']")).click();

也试过图像

driver.findElement(By.xpath("//form/div/div/div/div/div[2]/table/tbody/tr/td[2]/img[contains(@src,'iconActionSearch.png')]")).click();

我在Selenium IDE中尝试过完全相同的

driver.findElement(By.xpath("//div[@id='divToolbar']/div[2]/table/tbody/tr/td[2]/img")).click();

这就是上面的代码假设行为的地方

   <td class="icon-button combo-button" title="Search">
    <img src="../common/images/iconActionSearch.png">

这是html片段我有

<!DOCTYPE html>
<html>
<head>
<body class="navigator" onbeforeunload="closeAllChildWindows()" onload="initializeSlideIns()">
<div class="mmenu" style="display: none;">
<div class="mmenu" style="display: none;">
<div class="mmenu" style="display: none;">
<div class="mmenu" style="display: none;">
<div class="mmenu" style="display: none;">
<div class="mmenu" style="display: none;">
<div class="mmenu" style="display: none;">
<div class="mmenu" style="display: none;">
<div class="mmenu" style="display: none;">
<div class="mmenu" style="display: none;">
<div class="mmenu" style="display: none;">
<div class="mmenu" style="display: none;">
<div class="mmenu" style="display: none;">
<div class="mmenu" style="display: none;">
<div class="mmenu" style="display: none;">
<form name="navigatorForm">
<div id="pageHeadDiv">
<div class="toolbars">
<div class="toolbar-container">
<div id="divToolbar" class="toolbar-frame">
<div class="toolbar">
<div class="toolbar functions">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="icon-button" nowrap="" itemid="emx567127522162.935" title="Home">
<td class="icon-button combo-button" title="Search">
<img src="../common/images/iconActionSearch.png">
</td>
<td class="menu-arrow" title="Search">
<td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="breadcrumbs">
<script src="./scripts/emxBreadcrumbs.js" type="text/javascript">
<script src="./scripts/emxQuery.js" type="text/javascript">
<script type="text/javascript">
<div id="pageContentDiv" style="top: 62px;">
<div id="layerOverlay" style="display: none;"></div>
<div id="panelSlideIn" class="dialog viewer" style="top: 62px; display: none;">
<div id="windowshadeMask" style="z-index: 50; display: none;">
</form>
<div id="checkoutdiv">
</body>
</html>

2 个答案:

答案 0 :(得分:3)

尝试使用css选择器替代:

String cssSelector="td[class='icon-button combo-button']>img"
driver.findElement(By.cssSelector(cssSelector)).click();

一条建议:使用firebug,firefox扩展来验证你找到的元素是否正确 enter image description here

答案 1 :(得分:0)

就像eugene的一个不同的解决方案(顺便说一句,这是一种更好的方法,因为CSS选择器会更快),如果你必须使用XPath:

//td[@class='icon-button combo-button']/img

您的原始XPath解决方案永远不会起作用,它们非常局限于特定的位置。你在某个地方放了一个额外的div,你的整个XPath都会倒下。所以去寻找一些不那么脆弱的东西。