【问题标题】:python .click() not workingpython .click()不起作用
【发布时间】:2016-12-22 08:30:16
【问题描述】:

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

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

硒 版本 2.53.2

我希望有人知道这个问题的答案。我想要实现的是获取一个 Facebook 页面,将其滚动到最远,然后展开页面下方出现的所有“cmets”、“回复”和“查看更多”链接。

到目前为止,我只尝试了“查看更多”链接,但我无法让它处理点击链接。我认为我的基本知识告诉我它找到了 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")

【问题讨论】:

  • "我想要实现的是获取一个 Facebook 页面,将其滚动到最远,然后展开所有 'cmets'、'replies' 和 'See More'出现在页面下方的链接。” - 这是为了什么,目的是什么?如果你想与 Facebook 上的内容进行交互,你应该使用他们的 API。他们的 ToS 明确禁止使用任何此类自动化工具。

标签: python facebook selenium xpath


【解决方案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 页面并确保它正常工作。

【讨论】:

    【解决方案2】:

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

    大小应为 100% - 并且必须与浏览器的 ZOOM 匹配 - 也是 100%

    我在 IE 上遇到这个问题大约 12 个小时,尝试了所有可能的点击变体,将鼠标悬停在元素上 - 然后点击,使用 find_element_by_link_text,更新所有内容等。并且还尝试了人们在 stackoverflow 中建议的一些东西 - 没有任何效果。

    在浏览器中缩放至 100% 并将显示比例设置为 100% 即可。

    【讨论】:

      猜你喜欢
      • 2023-03-26
      • 2017-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-08
      相关资源
      最近更新 更多