使用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
inturn调用get()
。但刮擦是违反法律的,你可能会被质疑,甚至可能会在空中降落。改用https://www.facebook.com/
- 通过以下关键字和标记的存在,可以很明显地看出:
{“react_render”:true,“reflow”:true}
[“反应产品”]
[“ReactDOM prod”]
taggertype:{r:[“t5r69”],be:1}
- 但是,如果您打算自动登录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
- 使用
工具书类 您可以在以下内容中找到一些相关的详细讨论:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC