我有以下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')]"));
这让我看到突出显示的菜单,但我需要按钮! 有什么想法吗?
答案 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]"));