2015-11-06 61 views
2

我正在使用selenium webdriver進行自動化。下面有一個特例。如何使用子元素爲以下方案單擊父元素

<div id = "A"> 
    <div id = "container"> 
    <div id="innercontainer"> 
     <div> 
     <div id="ruleContainer"> 
     <span id="rule">CNET</span> 
     <div id="name">CNET></div> 
     </div> 
    </div> 
    </div> 
    <a href = "#....."></a> 
</div> 
<div id = "A"> 
    <div id = "container"> 
    <div id="innercontainer"> 
     <div> 
     <div id="ruleContainer"> 
     <span id="rule">GNET</span> 
     <div id="name">GNET></div> 
     </div> 
    </div> 
    </div> 
    <a href = "#....."></a> 
</div>`<div id = "A"> 
    <div id = "container"> 
    <div id="innercontainer"> 
     <div> 
     <div id="ruleContainer"> 
     <span id="rule">DNET</span> 
     <div id="name">DNET></div> 
     </div> 
    </div> 
    </div> 
    <a href = "#....."></a> 
</div>` 

在這裏,我需要單擊元素A與文本CNET ...我能夠得到CNET兒童,但它是一個死的元素。所以我需要點擊具有該特定孩子的元素A的錨點。

我該怎麼做?有沒有辦法?我知道循環的解決方案,但我的應用程序經常刷新,因此我遇到了陳舊的異常。所以有人可以給我一個更好的解決方案,例如導航回到父級,然後再到兄弟並單擊()。

+0

這是一個關於點擊父元素的相關文章,因爲一旦你找到了帶有'CNET'文本的元素。 http://stackoverflow.com/questions/8577636/select-parent-element-of-known-element-in-selenium。作爲一個方面說明,因爲我對硒不是很熟悉,但是你可能不想擁有多個ID爲'A'的元素,而是可以使用類似'container-parent'之類的語義類名similiar。 – clovola

+0

似乎有一個div在每個ID中打開太多='A'區域 – drkthng

回答

6

試試這個XPath:

//div[@id='A' and .//span[contains(text(), 'CNET')]]//a 

它將搜索div與ID =「A」具有span包含文本「CNET」,從div它選擇錨子元素

+1

非常感謝..它的工作 – DOSKrupp

相關問題