2013-04-12 4 views
1

다음 HTML 코드가 있습니다. 강조 표시된 요소를 선택해야합니다. 메뉴가 강조 표시된 경우 메뉴가 아닌 메뉴에서 단추를 선택하고 싶습니다. 메뉴가 playfield 인 경우 선택하고 싶습니다.버튼의 XPath를 선택 하시겠습니까?

<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

당신이 무엇을 정의 해 주시겠습니까? '메뉴가 playfield 인 경우'그 뜻을 선택하고 싶습니다. – predi

+0

메뉴를 선택한 다음 [@ class, 'highlight'] 메뉴를 선택하면. 하지만 메뉴 요소를 선택하고 싶지 않습니다. 강조 표시된 메뉴의 하위 항목 인 강조 표시된 단추를 원합니다. 메뉴가 [@ id, 'plf'] 인 경우 버튼이 없기 때문에 메뉴를 원한다. –

답변

0

질문을 올바르게 이해하면이 XPath가 제공 한 예를 사용해야합니다.

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

그것은 class='highlight'이 그것을 얻을 수있는만큼 간단한

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

또는

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

문제 : org.openqa.selenium.InvalidSelectorException : 주어진 selector // * [contains (@ class, 'highlight')]] // button [@ class = 'highlight']이 잘못되었거나 결과가 나타나지 않습니다. WebElement입니다. –

+0

XPath에 예외가 표시되면 ']'이 많습니다. – ellak

+0

죄송합니다. 여전히 코드가 고정되어 있지 않습니다. –

2

를 포함와 <menu>를 찾습니다 강조 표시된 요소는 ts dom이 변경되었는지 여부. 때로는 자바 스크립트에 의해 트리거되며 테스트를 위해 상당히 문제가되는 새로운 요소를 만듭니다. iframe이 위에서 언급 한 바와 같이 또는 : D

0

확인하는 경우를 시도해보세요 <button>class='highlight'

0

당신은 조건문이 필요합니다 : 가 않는 경우, 요소 "//menu[@id='apl']/button[@class='highlight']"이 존재하는지 확인해야합니다, 그것을 클릭하지 않을 경우 다음을 클릭 "//menu[@id='plf']"

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