Xpath存在于chrome中,但不存在于我的脚本中。没有这样的元素:无法找到元素:

时间:2017-09-27 19:20:09

标签: python selenium xpath instagram

我试图通过xpath找到按钮元素,当我在chrome中键入它时找到该按钮元素,但脚本给了我no属性id错误。我已经尝试切换到iframe和框架,我已经使用webdriver.wait等待按钮元素显示,但没有一个工作。我还想循环浏览并单击第一个按钮,如果它显示“Follow”,然后移动到下一个按钮,如果它显示“Follow”。脚本在chrome上运行,我试图在Instagram {{3}上执行此操作}

 popup = browser.find_element_by_xpath('//button[@class="_qv64e _gexxb _4tgw8 _njrw0"]')

 ActionChains(browser)\
.move_to_element(popup).click()\
.perform()

File "/Users/trevaroneill/PycharmProjects/Insta/instafollow.py", line 91, in <module> popup = browser.find_element_by_xpath('//button[@class="_qv64e _gexxb _4tgw8 _njrw0"]')

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//button[@class="_qv64e _gexxb _4tgw8 _njrw0"]"}

2 个答案:

答案 0 :(得分:1)

由于您使用的是find_element s ,因此您应该写:

 ActionChains(browser)\
.move_to_element(popup[0]).click()\
.perform()

以访问find_elements返回的列表的第一个元素。

问题是如果你的xpath选择了几个webelements,在这种情况下,它不确定第一个是你实际瞄准的那个。如果您没有使用find_elements的特殊原因,我建议您使用 find_element

答案 1 :(得分:0)

您正在列表中获取所需元素。

变化 python3

popup = browser.find_elements_by_xpath('//button[@class="_qv64e _gexxb _4tgw8 _njrw0"]')

popup = browser.find_element_by_xpath('//button[@class="_qv64e _gexxb _4tgw8 _njrw0"]')而非find_element