2017-01-17 113 views
2

我不確定你們是否熟悉Reddit,但是我想爲一些戰錘絕殺問題啓動一個小的subreddit,在這裏人們可以發佈問題然後回答問題他們。爲了突出顯示所回答的問題,我希望主持人帳戶在他們「解決」後自動向上投票,我正在嘗試使用Selenium,但是我遇到了一些發現upvote按鈕的問題。尋找一個按鈕的xpath,在python和selenium中使用它

目前,我能夠用我主持的帳戶登錄,但我無法按給予好評按鈕,我曾嘗試下面的代碼無濟於事:

driver.get("https://www.reddit.com/r/ChosenSub/ChosenThread") 

time.sleep(3) 

driver.find_element_by_xpath("div[@id='siteTable']/div[@id='thing_t3_XXXXXX']/div[@class='midcol unvoted']/div[@class='arrow up login-required access-required']").click 

凡XXXXX是一個id有問題的線程,但是這絕對沒有結果。我對Python很熟悉,但絕不是xPath,我在Chrome中使用XPath幫助器工具來獲取XPath,但仍然沒有運氣

如果任何人有任何潛在的想法,請讓我知道,任何和所有非常感謝幫助。

+1

請提供您的頁面html代碼片段,以便我們可以幫助您使用xpath。 – acikojevic

回答

1

考慮在評論鏈接提供的,你可以嘗試簡化XPath如下用途:

driver.find_element_by_xpath("//div[@id='thing_t3_XXXXXX']//div[@aria-label='upvote']").click() 

如果您需要更多的普通方法,通過其id(如果要給予好評問題id值預定義):

def upvote_question(question_id): 
    driver.find_element_by_xpath("//div[@id='%s']//div[@aria-label='upvote']" % question_id).click() 

然後你可以只用一個問題的0123用它作爲參數:

upvote_question("thing_t1_dcjl4vu") 
+0

感謝您的幫助,但是,當我嘗試將其關閉時,出現以下錯誤: 消息:無法找到元素:{「method」:「xpath」,「selector」:「// div [@id ='thing_t3_5oiv2p'] // div [@ aria-label ='upvote']「} –

+0

我的錯誤,我顯然有語言設置爲本地,這就是爲什麼它沒有工作。非常感謝你的幫助,我真的很感激! –

1

你可能需要添加'//'xpath的前面,因此它找到的div文檔中任何地方,否則就必須在html根(它很可能不是)。所以xPath是:

"//div[@id='siteTable']..." 
+2

time.sleep()在幾秒鐘內工作 – Navidad20

+0

感謝您的幫助!它似乎能夠找到一些東西,因爲它不會返回錯誤,但它看起來並不像它實際上最終點擊按鈕本身。 –

相關問題