2016-08-02 46 views
-1

我想存儲一個facebook id的好友列表。爲此,每當我點擊個人資料上的朋友標籤時,如果朋友列表沒有被阻止,朋友列表就會被打開,否則其他事情會打開。selenium預期條件選擇器By.PARTIAL_LINK_TEXT不工作

所以檢查,如果朋友列表被打開或阻塞,我選擇如果朋友列表被打開如下,其存在的元件:

try: 
    WebDriverWait(browser, 4).until(EC.presence_of_element_located((By.PARTIAL_LINK_TEXT,"friends_all"))) 
except: 
    print " friend list is blocked" 
    browser.close() 

和HTML元素如下:

<a class="_3c_ _3s-" href="https://www.facebook.com/tripti.vishnoiji/friends_all" aria-controls="pagelet_timeline_app_collection_100001042287600:2356318349:2" role="tab" aria-selected="true" name="All friends" id="u_jsonp_2_0"> 
<span class="_3sz">All friends</span> 
<span class="_3d0"></span> 
<div class="_3s_"></div> 
</a> 

輸出顯示爲: 朋友列表被阻止

爲什麼沒有選擇元素。

+0

你有沒有試過用'WebDriverWait(瀏覽器,4)。直到(EC.presence_of_element_located((By.NAME,「所有朋友「)))' –

+0

嘗試此代碼'WebDriverWait(browser,4).until(EC.presence_of_element_located((By.PARTIAL_LINK_TEXT,」All friends「)))''。 – Harish

+0

@Harish非常感謝你的工作 – vivek

回答

0

試試下面的代碼:

WebDriverWait(browser, 4).until(EC.presence_of_element_located((By.PARTIAL_LINK_TEXT,"All friends"))) 

希望它能幫助!

0

你想指的ahref屬性,而實際的鏈接文本"All friends",它不是包含"friends_all"

嘗試使用下面的代碼:

WebDriverWait(browser, 4).until(EC.presence_of_element_located((By.XPATH,'//a[span[text()="All friends"]]'))) 

WebDriverWait(browser, 4).until(EC.presence_of_element_located((By.LINK_TEXT,'All friends'))) 
0

鏈接文本

這是一種使用鏈接文本在網頁中定位超鏈接的簡單方法。

例如

<a href="http://www.google.com">Launch Google</a> 

這裏Link TextLaunch Google

偏鏈接文本:

顧名思義Partial Link Text只是整個Link Text例如部分字組合在上述例子中LaunchGoogle & Launch Google

所以偏鏈接文本將是要麼AllFriends & All Friends

在上述HTML,HREF包含friends_all,它不是部分鏈接文本。

所以如果你想點擊就可以使用下面的鏈接: -

WebDriverWait(browser, 4).until(EC.presence_of_element_located((By.XPATH,'//span[text()='All friends']))) 
+0

感謝您的建議 – vivek