Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Selenium Python访问Facebook元素的简单程序,但出现错误_Python_Facebook_Selenium_Selenium Webdriver_Webdriverwait - Fatal编程技术网

使用Selenium Python访问Facebook元素的简单程序,但出现错误

使用Selenium Python访问Facebook元素的简单程序,但出现错误,python,facebook,selenium,selenium-webdriver,webdriverwait,Python,Facebook,Selenium,Selenium Webdriver,Webdriverwait,这是我的代码: from selenium import webdriver import time driver = webdriver.Chrome() driver.get("https://www.fb.com") driver.find_elements_by_name("email").send_keys("******************") driver.close() 观察:执行程序后,我得到错误发送密钥()

这是我的代码:

from selenium import webdriver

import time

driver = webdriver.Chrome()
driver.get("https://www.fb.com")
driver.find_elements_by_name("email").send_keys("******************")
driver.close()

观察:执行程序后,我得到错误<代码>发送密钥()和
单击()
方法不起作用。

错误是由于这行
驱动程序引起的。按名称(“电子邮件”)查找元素。
。selenium中的find_elements命令用于提取具有相同类型定位器的多个元素,这些定位器返回一个对象列表

在这里,您访问的是单个元素,提取时需要使用
驱动程序。通过\u名称(“电子邮件”)查找\u元素。

下面给出了一个示例脚本:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.fb.com")
driver.find_element_by_name("email").send_keys("******************")
driver.close()

只需一个附加信息,
close()
命令关闭焦点下的窗口,
quit()
命令关闭会话中活动的窗口。因此,您也可以使用
driver.quit()
命令。

要在访问页面后获取元素,由于页面加载等待时间的原因,我们倾向于等待元素可交互。您还可以使用find_元素和not find_元素

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.fb.com")
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.NAME, "email"))).send_keys("*****")
driver.quit()
三个问题:

  • 您需要找到一个元素,而不是许多元素
  • 你需要给时间来装载东西
  • 不需要立即关闭驾驶员
尝试:


您需要注意以下许多事项:

  • 如果找到元素,则返回包含元素的列表;如果未找到元素,则返回空列表。但是,当您试图调用时,您必须进一步查找并使用一个按名称查找元素的

  • 您尚未使用模块中的任何方法,因此理想情况下需要删除未使用的导入:

    import time
    
  • 调用
    https://www.fb.com
    通过
    get()
    inturn调用
    https://www.facebook.com/
    。但刮擦是违反法律的,你可能会被质疑,甚至可能会在空中降落。改用

  • 通过以下关键字和标记的存在,可以很明显地看出:

    • {“react_render”:true,“reflow”:true}
    • [“反应产品”]
    • [“ReactDOM prod”]
    • taggertype:{r:[“t5r69”],be:1}
    因此,你应该避免将Facebook自动化

  • 但是,如果您打算自动登录Facebook,则需要使
    元素成为可点击的()
    ,并且您可以使用以下任一选项:

    • 使用
      CSS\u选择器

      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name='email']"))).send_keys("vivek")
      
    • 使用
      XPATH

      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@name='email']"))).send_keys("vivek")
      
    • 注意:您必须添加以下导入:

      from selenium.webdriver.support.ui import WebDriverWait
      from selenium.webdriver.common.by import By
      from selenium.webdriver.support import expected_conditions as EC
      

工具书类 您可以在以下内容中找到一些相关的详细讨论:


这是否回答了您的问题?什么样的错误会显示错误消息。回溯(最近一次调用最后一次):文件“/home/dhanvika/PycharmProjects/意大利语/sss.py”,第9行,在驱动程序中。按名称(“电子邮件”)查找元素。发送键(**********************)AttributeError:“列表”对象没有因查找元素而使用的属性“发送键”。
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC