我不确定你们中是否有人熟悉 Reddit,但是我想为一些战锤传说问题创建一个小型 Reddit 子版 block ,人们可以在其中发布问题然后回答它们。为了突出显示已回答的问题,我希望主持人帐户在问题“已解决”后自动对其进行投票,我正在尝试使用 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,但仍然没有运气
如果有人有任何潜在的想法,请告诉我,非常感谢任何和所有的帮助。
最佳答案
考虑到评论链接中提供的内容,您可以尝试使用简化的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")
关于python - 查找按钮的 xpath,在 python 和 selenium 中使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41701270/