我试图通过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"]"}
答案 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
。