2017-01-03 158 views
0

說,例如,我有一個關鍵字這個名單:「頭,腳,手,手指」 我如何通過所有這些內部「()browser.find_element_by_link_text()的? 目的是逐個搜索所有這些關鍵字,如果找到,將模擬點擊每個關鍵字。我可以在selenium中的browser.find_element_by_link_text()中傳遞變量嗎?

示例代碼:

for i in browser.find_element_by_link_text("**all keywords should be passed here**"): 
     i.click() 

PS。 Python新手。

回答

2

您無法將多個鏈接文本傳遞給find_element_by_link_text()

您有多種方法可以解決問題。你可以,例如,切換到使用XPath定位 - 動態地構建一個表達檢查所有的鏈接文本的變化:

link_texts = ["Head", "Feet", "Hand", "Fingers"] 
expression = "//a[%s]" % (" or ".join(". = '%s'" % link_text for link_text in link_texts)) 

for link in driver.find_elements_by_xpath(expression): 
    link.click() 

或者,你可以在一個循環處理NoSuchElementException exception發出find_element_by_link_text()(如果一個元素不發現)正確:

from selenium.common.exceptions import NoSuchElementException 

link_texts = ["Head", "Feet", "Hand", "Fingers"] 
for link_text in link_texts: 
    try: 
     link = driver.find_element_by_link_text(link_text) 
     link.click() 
    except NoSuchElementException: 
     print("Link text '%s' not found" % link_text) 

後一種選擇會比較慢,但是在同一時間更加明確。

+0

第二個建議結果爲「NameError:name'NoSuchElementException'未定義」...我明天想到第一個,我不能讓它工作..謝謝隊友 –

+0

@CuriousCat是的,你需要導入它,添加到答案。希望有所幫助。 – alecxe

+0

第二部作品,謝謝alecxe,第一部完全沒有做過.. –

相關問題