2013-12-20 60 views
0

當我檢查與螢火蟲它顯示這樣的元件識別元件。 但Webdriver未能識別元素。代碼以由硒

你們中的任何人可以建議我請如何在python中編寫代碼來識別這些元素?

+0

當我檢查與螢火蟲元素顯示爲創建新的挑戰 user3053162

回答

2

嘗試使用"//a[text()='Create new challenge')]"

1

我強烈建議不要使用YuvarajHK走後路線的XPath。 Xpath很多slower and much less readable than CSS

而是使用CSS。所以這裏的問題是,沒有一個屬性可以與之匹配。在onclickhref上匹配並不明智,所以在CSS中只有一個選項。一個選項,我強烈推薦 ...

使用父子層次結構來唯一標識您的元素。

所以,你的元素有一個父親。而不是採取其他答案中給出的xpath,這是非常低效的匹配文本,找到該特定元素的父項。

考慮以下幾點:

<div id="newChallenge"> 
    ... 
    <a onclick="viewmodel.view_results(false);" href="#">Create new challenge</a> 
    ... 
</div> 

所以第一步是要找到的elemnt的父。如果元素的父元素沒有ID,那沒問題。剛剛上升到另一個級別。

在我們的案例中:我們的父母選擇器是div#newChallenge,我們鏈接的選擇器只是a

我們的CSS選擇器會

div#newChallenge a 

(或)

div#newChallenge > a 

(取決於如果a是一個後裔,而不是兒童的)

此外,如果你有多個鏈接:

<div id="newChallenge"> 
    <a href="someOtherPage.html">Hi</a> 
    <a onclick="viewmodel.view_results(false);" href="#">Create new challenge</a> 
    <a onclick="viewmodel.view_results(false);" href="#">Create something else</a> 
</div> 

您可以看到我們的選擇器div#newChallenge a不會唯一標識我們的元素。相反,我們可以找到鏈接的索引。在這種情況下,我們要選擇的鏈接的索引是2,因爲...

<div id="newChallenge"> 
    (1) <a href="someOtherPage.html">Hi</a> 
    -> (2) <a onclick="viewmodel.view_results(false);" href="#">Create new challenge</a> 
    (3) <a onclick="viewmodel.view_results(false);" href="#">Create something else</a> 
</div> 

然後,我們可以只追加CSS僞類:nth-of-type(甚至其他:nth-*僞類)

您的最終選擇可能是

div#newChallenge a:nth-of-type(2) 

因此得出結論:您將用於查找python中的元素的代碼將爲:

driver.find_elements_by_css_selector('div#newChallenge a:nth-of-type(2)'); 
0

CSS =一【點擊* = 'viewmodel.view_results(假)']

請讓我知道的是上述CSS選擇器是否工作。