0

我正在使用 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>
4

2 回答 2

3

尝试使用 css 选择器替代:

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

一条建议:使用 firebug、firefox 扩展来验证您正确定位元素 在此处输入图像描述

于 2012-10-30T22:53:25.830 回答
0

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

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

您原来的 XPath 解决方案永远不会起作用,它们非常局限于特定的位置。你在某处添加了一个额外的 div,你的整个 XPath 就会崩溃。所以选择一些不那么脆弱的东西。

于 2012-10-31T16:15:13.233 回答