2016-12-14 120 views
0

我有一个HTML代码,这样硒蟒蛇点击Facebook上的元素无法工作

<div class="_75e" id="u_0_1z">Invite friends to like this Page</div> 

我想单击具有文本“邀请朋友喜欢此页”的链接。 enter image description here

我尝试以下方法

driver.find_element_by_id("u_0_1z").click() 

driver.find_element_by_link_text('Invite friends to like this Page').click() 

然而,而不是点击链接,消息框按钮被点击

喜欢这个 enter image description here

你能帮我解决这个问题吗?非常感谢!!

+1

Facebook的设计以这样的方式阻止这种尝试来刮擦和自动化其使用。相反,您应该强烈考虑使用Facebook API。也就是说,可能有一个容器在你正在寻找的按钮周围,你应该点击文本而不是底层div。您还应该确认您的'find_element_by'适合定位所需的元素。 – sytech

+0

我按照这个教程https://pythonicways.wordpress.com/2016/10/04/invite-friends-to-your-facebook-page-with-python-selenium/。我尝试使用本教程中的代码,但它不起作用。我不明白他们为什么会得到结果,如视频@@ –

回答

0

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() 
+0

我试过你的代码,但朋友请求按钮被点击,而不是@@ –

+0

@RoboticVn有没有其他'div'元素与'邀请朋友喜欢这个页面'文本在页面上? – alecxe

+0

只有一个 –