选择按钮的XPath?

时间:2013-04-12 06:10:57

标签: java xpath selenium webdriver selenium-webdriver

我有以下HTML代码我需要选择突出显示的元素。如果菜单突出显示,我想选择菜单中的按钮而不是菜单!如果菜单是playfield,我想选择它。

<menu id="apl" class="highlight" widgetid="apl">
<button id="navi" selectable="true" widgettype="button" widgetid="audio_radio_apl_navi">
<button id="audio" class="highlight" selectable="true" widgettype="button" widgetid="audio_radio_apl_audio">
<button id="tel" selectable="true" widgettype="button" widgetid="audio_radio_apl_tel">
<button id="video" selectable="true" widgettype="button" widgetid="audio_radio_apl_video">
<button id="system" selectable="true" widgettype="button" widgetid="audio_radio_apl_system">
<button id="net" selectable="true" widgettype="button" widgetid="audio_radio_apl_net">
</menu>
<menu id="plf" widgetid="plf">
<img src="img/plf_radio.png"/>
</menu>

到目前为止我的代码是:

focusedElement = driver.findElement(By.xpath("//*[contains(@class,'highlight')]"));

这让我看到突出显示的菜单,但我需要按钮! 有什么想法吗?

5 个答案:

答案 0 :(得分:2)

尝试这个

focusedElement = driver.findElement(By.xpath("//button[@class='highlight']"));

尽可能简单或

Select selectBox = new Select(driver.findElement(By.xpath("//menu[@id='apl']")));

答案 1 :(得分:0)

如果我理解你的问题,这个XPath应该适用于你提供的例子。

//menu[@class='highlight']//button[@class='highlight']

它会查找<menu> class='highlight'<button>包含class='highlight' {{1}}

答案 2 :(得分:0)

检查突出显示的元素是否更改了dom。 有时它是由javascript触发的,并创建一个新元素,这是一个很难测试的问题。 或者如上所述Iframe:D

答案 3 :(得分:0)

您需要条件语句: 你应该检查元素"//menu[@id='apl']/button[@class='highlight']"是否存在,如果存在,点击它,如果没有,然后点击"//menu[@id='plf']"

答案 4 :(得分:0)

focusedElement = driver.findElement(By.xpath("//menu[@id='apl']/button[2]"));