我使用的是Selenium WebDriver。 (Java,如果這很重要)。Selenium WebDriver by xpath:通過子元素中的文本搜索
我需要找到一個元素,除其他外,搜索下屬元素下的文本。我目前通過遍歷元素列表並將getText()與我想要的值進行比較來實現,但我懷疑讓瀏覽器通過xpath執行它會更好。
例如,這裏是我想找到一個元素:
<span role="button" class="mblToolBarButton mblToolBarButtonHasLeftArrow" tabindex="0" id="dojox_mobile_ToolBarButton_3" dir="ltr" widgetid="dojox_mobile_ToolBarButton_3"><span class="mblToolBarButtonArrow mblToolBarButtonLeftArrow mblColorDefault mblColorDefault45"></span><span class="mblToolBarButtonBody mblColorDefault"><table cellpadding="0" cellspacing="0" border="0" role="presentation" class="mblToolBarButtonText"><tbody><tr><td class="mblToolBarButtonIcon"></td><td class="mblToolBarButtonLabel">Back</td></tr></tbody></table></span></span>
網上搜索後,我嘗試了以下選擇:
//*[contains(@class,'mblToolBarButtonHasLeftArrow') and text()[contains(.,'Back')]]
但沒有奏效。
理想情況下,我想搜索整個文本,而不是一個子字符串,以便這個元素與文本「後退」將被發現,但與文本「備份」的另一個相似的元素將不會被發現。我不需要連接不同子元素中的文本。
我應該寫什麼選擇器?謝謝!
花了我一些時間才意識到這會找到祖先,而不是孩子。謝謝,這可能會起作用!但有時我只需要通過調用該元素的findElement()方法在給定元素下找到這些元素。我可以在開始時刪除//,但是/ ancestor ::會在最初的元素上面遍歷DOM嗎? –