python .click()无效

时间:2016-12-22 08:30:16

标签: python facebook selenium xpath

我目前正在使用以下Python和Selenium版本:

Python34 3.4.3(v3.4.3:9b73f1c3e601,2015年2月24日,22:43:06)[MSC v.1600 32 bit(Intel)]

硒 版本2.53.2

我希望有人知道答案。我试图做到的,是采取一个Facebook页面,因为它竟把滚动它,然后展开所有的“意见”,“回复”和“查看更多”即会显示在网页的链接。

到目前为止,我只尝试了“查看更多”链接,但我无法通过点击链接来处理它。我认为我的基本知识告诉我,它找到了xpath,因为我没有得到这个错误,但我做的是.click函数,后面立即调用。我也试过使用find_element_by_link_text('See More'),但是这不起作用。我还设法找到了html结构,其中有两个看到更多链接的例子,但由于它们不相同,我不知道如何实现这些:

//div[3]/div[2]/div/span/span/a/span
//div[2]/div[2]/div/span/span/a/span

//div[@id='id_58591b7145b529535706885']/span/span/a/span
//div[@id='id_58591f8225af12f45796030']/span/span/a/span

如果有人有任何建议或修改或替代选择,那么我将非常感谢他们。提前谢谢,

import os
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

#Global Variables
target = "serena.xxxx.x"
username = "xxxxx@xxxxxx.com"
password = "xxxxxxxx"

#code block to log in user
def logmein():
    search_box = driver.find_element_by_name('email')
    search_box.send_keys(username)
    search_box = driver.find_element_by_name('pass')
    search_box.send_keys(password)
    search_box.submit()

driver = webdriver.Firefox()

driver.get("https://www.facebook.com//")

logmein()

elm = driver.find_element_by_tag_name('html')
elm.send_keys(Keys.END)
time.sleep(2)
elm.send_keys(Keys.END)
time.sleep(2)
elm.send_keys(Keys.END)
time.sleep(2)
elm.send_keys(Keys.END)
time.sleep(2)
elm.send_keys(Keys.HOME)

# Initiates See More Open
SeeMore = driver.find_element_by_xpath("//a[@class='see_more_link']")
print("Found See More")
SeeMore.click()
print("Expand SeeMore option")

2 个答案:

答案 0 :(得分:1)

这有帮助吗?

import os
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

#Global Variables
target = "..."
username = "..."
password = "..."

def logmein():
    search_box = driver.find_element_by_name('email')
    search_box.send_keys(username)
    search_box = driver.find_element_by_name('pass')
    search_box.send_keys(password)
    search_box.submit()

driver = webdriver.Firefox()

driver.get("https://www.facebook.com//")

logmein()

SeeMore = WebDriverWait(driver, 15).until(EC.element_to_be_clickable((By.LINK_TEXT, 'See More...')))
print("Found See More")
time.sleep(2) # apparently there is some javascript execution that requires this sleep to be here.
SeeMore.click()
print("Expand SeeMore option")

很高兴看到上述链接的屏幕截图。通过这种方式,我可以访问模拟Facebook页面并确保其有效。

答案 1 :(得分:0)

“显示设置”->“比例和布局”:

大小应为100%-并且必须与浏览器的缩放比例相匹配-也是100%

我在IE上遇到了大约12个小时的问题,尝试了单击的所有可能变化,将鼠标悬停在元素上,然后使用find_element_by_link_text单击,更新了所有.etc。并尝试了人们在stackoverflow中建议的一些方法-无效。

在浏览器中放大到100%并将显示比例设置为100%可以达到目的。