Selenium:点击 - div中的div

时间:2013-03-19 15:34:38

标签: html selenium automated-tests selenium-ide

我有这个:

<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做它的意思,但是点击它什么都不做,甚至不会返回错误。

3 个答案:

答案 0 :(得分:1)

尝试使用Element Locator

的CSS选择器选项

像这样的东西

css = "div.dhx_toolbar_btn div"

当然,这取决于完整DOM的样子。

答案 1 :(得分:1)

尝试使用xpath:

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

那个xpath你将使用文本“Interface”的div。如果div中有多个div,并且类为“dhx_toolbar_btn”,那么

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

如果你有多个包含'Interface'的div,我会以编程方式构造Xpath并传入你正在寻找的确切文本,假设文本是静态的。

答案 2 :(得分: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>

虽然我更喜欢更容易和更轻松的更简单的方法。