0

我有这个:

<div class="dhx_toolbar_btn def" title="">
<div>Interface</div>
</div>

并且想知道如何让 Selenium 点击它,因为我尝试了这个:

//div[@class='dhx_toolbar_btn def' and contains(., 'Interface')]

还有这个:

css=.dhx_toolbar_btn def:contains('Interface')

但似乎两者都不起作用,但它似乎与其他像这样的div一起使用:

<td class="td_btn_txt">
<div class="btn_sel_text">Billing Interface</div>
</td>

任何帮助表示赞赏。谢谢

**编辑**
我也尝试了这些,但都不起作用,也没有返回任何错误:

//div[5]/div/div[5]/div[9]
//*[text()='Interface']
//*[normalize-space(text())='Interface']
//*[contains(text(), 'Interface')]

**编辑**
我也刚刚注意到,当我尝试最后 4 个但使用 mouseDown 而不是单击时,它完全符合预期,(让它看起来像鼠标在项目上,但不点击它) ,所以我想知道为什么它会用mouseDown做它的意思,但是点击它什么都不做,甚至不返回错误。

4

3 回答 3

1

尝试使用元素定位器的 CSS 选择器选项

像这样的东西

css = "div.dhx_toolbar_btn div"

当然,这取决于您的完整 DOM 的外观。

于 2013-03-19T15:38:53.820 回答
1

试试 xpath:

//div[@class=\"dhx_toolbar_btn def\"]/div

该xpath将为您提供带有文本“Interface”的div。如果 div 中有多个具有“dhx_toolbar_btn”类的 div,则执行

//div[@class=\"dhx_toolbar_btn def\"]/div[text()="Interface"]

如果您有多个包含“接口”的 div,我将以编程方式构建 Xpath 并传入您正在寻找的确切文本,假设文本是静态的。

于 2013-03-19T17:00:12.740 回答
0

好的,所以不完全是我想要的方式,或者让它工作,但它有点:

<tr>
<td>waitForElementPresent</td>
<td>//div[@class='dhx_toolbar_btn def' and contains(., 'Interface')]</td>
<td></td>
</tr>
<tr>
<td>mouseDown</td>
<td>//*[text()='Interface']</td>
<td></td>
</tr>
<tr>
<td>mouseOver</td>
<td>//*[normalize-space(text())='Interface']</td>
<td></td>
</tr>
<tr>
<td>mouseDown</td>
<td>//*[text()='Interface']</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//div[5]/div/div[5]/div[9]</td>
<td></td>
</tr>
<tr>
<td>mouseOut</td>
<td>//div[5]/div/div[5]/div[9]</td>
<td></td>
</tr>

虽然我更喜欢更简单的方法。

于 2013-03-21T14:06:45.587 回答