[英]given a bySelector how can i get the selector of this element's child?
這是我的HTML :
<a class="info-button" data-voice-actions="["info", "more info"]" href="waze://?button=external_poi_info" id="info-button" onclick="window.location.href = this.href; return false;">
<span class="icon"></span>
<div class="btn-text">More Info</div>
</a>
我有一個by.org.openqa.selenium.By
選擇器:
By.cssSelector("#main > div > div.footer > div > a")
有時我想與自己相關,一旦我想獲取其文本,就如其<div class="btn-text">More Info</div>
子元素中一樣。
如何從我擁有的原始選擇器中一般性地獲取子元素的選擇器?
(我一般都會問,因為這種情況對我重復了幾次)
如果我清楚地理解了您面臨的問題,那么您可以做兩件事。
首先,編寫一個瘋狂的選擇器來找到它。
//a[@class='info-button']/..//div[.='More Info']
其次,找到父元素,然后從那里找到子元素
driver.findElement(By.cssSelector("#main > div > div.footer > div > a")).findElement(By.path("//div[.='More Info']")).something
最終,這取決於應用程序的工作方式。 下面假設你正在尋找的元素總是在你眼前的孩子a
元素,它總是有.btn_text
類。 您可以像處理任何字符串一樣操作選擇器:
String parent_sel = "#main > div > div.footer > div > a";
String child_sel = parent_sel + " > div.btn_text";
這兩個字符串都可以傳遞給By.cssSelector
。 如果我的假設不正確,請根據需要進行調整。 舉例來說,如果div
可以的后代a
,而不一定是它的孩子,你可以串連" div.btn_text"
獲得child_sel
。
我想獲取其文字
如果您正在尋找可以為您提供文本的選擇器,我會注意到沒有可以傳遞給findElement
選擇器來獲取文本 。 此函數始終返回元素(或以其復數形式使用時的元素列表)。 您必須在獲取的元素上使用getText()
。 (並且,如果您想知道:XPath通常可以選擇文本,但是當您通過Selenium使用它時則不能。)
您可以使用下面的xpath找到“信息按鈕”:
//div[@class='footer']//a[@class='info-button']
要檢索文本“更多信息”,可以使用以下xpath:
//div[@class='footer']//div[.='More Info']
使用innerHTML / text到達div元素的css-selector可以是這樣的:
#main > div > div.footer > div > a > div:nth-child(1)
它將第一個子元素“ div”定位在相關的“ a”元素下。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.