我不确定你是否熟悉Reddit,但是我想为一些战锤传说问题开始一个小的subreddit,在那里人们可以发布问题然后回答它们。要突出显示已回答的问题,我希望主持人帐户在“解决”时自动提升他们,我正在尝试使用Selenium,但是我遇到了一些找到upvote按钮的麻烦。
目前,我可以使用我的主持人帐户登录,但是我无法按下upvote按钮,我尝试了以下代码无效:
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,但仍然没有运气
如果有人有任何潜在的想法,请告诉我,非常感谢任何和所有的帮助。
答案 0 :(得分:1)
您可能需要在'//'
前面添加xpath
,以便在文档中的任何位置找到div
,否则它必须位于{{的根} 1}}(很可能不是)。所以html
将是:
xPath
答案 1 :(得分: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()
然后你可以使用问题id
作为参数:
upvote_question("thing_t1_dcjl4vu")