driver.find_element_by_link_text('Invite friends to like this Page').click()
这肯定是行不通的,因为 “通过链接文本” 定位器适用于链接仅 - a
元素。
driver.find_element_by_id("u_0_1z").click()
这看起来像它应该匹配的元素,而是通过症状来判断,有一个另一个元素与页面上的相同id
。
我会用 “与XPath” 选项尝试:
driver.find_element_by_xpath("//div[. = 'Invite friends to like this Page']").click()
您还可以添加一个Explicit Wait如果您遇到任何时间相关的问题:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 10)
elm = wait.until(EC.visibility_of_element_located((By.XPATH, "//div[. = 'Invite friends to like this Page']")))
elm.click()
Facebook的设计以这样的方式阻止这种尝试来刮擦和自动化其使用。相反,您应该强烈考虑使用Facebook API。也就是说,可能有一个容器在你正在寻找的按钮周围,你应该点击文本而不是底层div。您还应该确认您的'find_element_by'适合定位所需的元素。 – sytech
我按照这个教程https://pythonicways.wordpress.com/2016/10/04/invite-friends-to-your-facebook-page-with-python-selenium/。我尝试使用本教程中的代码,但它不起作用。我不明白他们为什么会得到结果,如视频@@ –