【问题标题】:Using Python & Selenium to send message to friend in Facebook使用 Python 和 Selenium 向 Facebook 中的朋友发送消息
【发布时间】:2018-06-28 14:39:46
【问题描述】:

我目前正在用 Python 编写一个脚本来登录 facebook,我想向朋友发送消息。该脚本登录到我的 Facebook,它设法找到我的朋友,但没有发送消息。我不是 100% 确定,但我认为问题出在文本区域上的 div 标签/CSS(我注释掉了那段代码)。

截图: Text doesn't appear here

这是我的代码:

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

driver = webdriver.Chrome('C:\path\chromedriver.exe')
driver.get('https://www.facebook.com/')

username_box = driver.find_element_by_id('email')
username_box.send_keys(USEREMAIL)
passElem = driver.find_element_by_id("pass")
passElem.send_keys(USERPASSWORD)
passElem.send_keys(Keys.RETURN)
userTargetUrl = "https://www.facebook.com/messages/t/" + "USERTAGET"
driver.get(userTargetUrl)

//The problem is here I think
    elem = driver.find_element_by_css_selector("div textarea.uiTextareaNoResize")


    while True:
        elem.send_keys("Test")
        elem.send_keys(Keys.RETURN)
        driver.find_element_by_id("u_0_t").click()

我得到的错误代码是:

selenium.common.exceptions.NoSuchElementException: 
Message: no such element: Unable to locate element: 
{"method":"css selector","selector":"div textarea.uiTextareaNoResize"}
  (Session info: chrome=63.0.3239.132)
  (Driver info: chromedriver=2.35.528161 
(5b82f2d2aae0ca24b877009200ced9065a772e73),platform=Windows NT 10.0.15063 x86_64)

【问题讨论】:

  • 报废Facebook 违反了他们的ToS。请改用Facebook APIs
  • 您要查找的 html 元素是什么?我找不到任何 uiTextareaNoResize
  • 回复评论 1:我也尝试过使用 Facebook API,但它似乎是一个旧 API,无法使用它。回复评论 2:我已经编辑了我的问题并添加了图片这样你就可以看到问题出在哪里:)

标签: python selenium testing


【解决方案1】:

我在RU SO))) 上解决了这个问题

简述步骤:

  1. 导入库

    from selenium.webdriver.common.action_chains import ActionChains

  2. 访问了网站

  3. 已登录

  4. 您有一个朋友列表,您点击了您朋友的图标并打开了一个聊天窗口。

现在该怎么办?))

  1. 您需要将光标放在输入行中,其中没有写入文本)用于此.click (),您可以使用您的任何XPath,但这里是较短的))

    driver.find_element_by_xpath("//*[@data-editor]").click()

  2. 按下.click ()方法后,光标位于文本输入区。现在我们需要输入文本,但使用.send_keys() 不是像您尝试的那样与指向元素的指针一起使用,而是单独作为一个动作(这是导入库的用途) actions = ActionChains(driver) actions.send_keys('HI') actions.perform()

    李>

呜呜呜))))

好吧,然后在发送图标上.click() 或按 Enter)))))

【讨论】:

    【解决方案2】:

    尝试通过名称、id、文本或任何其他唯一参数来查找元素 - 会更好(它们有时会更改设计,所有 xpath 和 css 选择器都变得无用)。

    我用粗体表示:

        <div aria-autocomplete="list" aria-controls="js_7" aria-describedby="js_0"
    aria-expanded="false" <b>aria-label="Введите сообщение..."</b> 
    class="notranslate _5rpu" role="combobox" spellcheck="true" 
    style="outline: medium none currentcolor; -moz-user-select: text; 
    white-space: pre-wrap; overflow-wrap: break-word;" <b>tabindex="9999"<b>
     <b>id="js_d"</b> contenteditable="true"><div data-contents="true">

    【讨论】:

    • 感谢您的回答,但我不能把它放在我的 python 代码中,因为它应该是一个测试代码..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    • 2011-10-19
    • 1970-01-01
    • 2012-06-20
    相关资源
    最近更新 更多