我正在为Facebook报废创建一个脚本。 我在Ubuntu 14.04.5 LTS下使用Selenium 2.53.6,Gecko驱动程序0.11.1和Firefox 50。我也在Windows 10下使用Gecko以及Chromedriver尝试了它,结果相同(我将在下面描述):(
我使用的以下代码片段是从Explicitly Waits部分的原始文档中复制的:
import datetime, time, sys, argparse
from time import strftime
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
from selenium.webdriver.support.ui import WebDriverWait # available since 2.4.0
from selenium.webdriver.support import expected_conditions as EC # available since 2.26.0
...
...
def main(usrEmail, pwd, numberOfScrolls, secondsWait, searchItem, outFilename):
# Open Firefox Browser
binary = FirefoxBinary('/usr/bin/firefox')
browser = webdriver.Firefox(firefox_binary=binary)
#put browser in specific position
browser.set_window_position(400, 0)
# goto facebook
browser.get("http://www.facebook.com")
#waiting( 5 )
try:
element = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.ID, "u_0_p")))
finally:
logging("logging in...")
问题是我收到了这个错误:
File "fb.py", line 86, in main
element = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.ID, "u_0_p")))
NameError: name 'By' is not defined
作为一种解决方法,我只使用time.sleep( delay )
形式的延迟,程序效果很好,但如果我有WebDriverWait
功能会更好。
我是否会遗漏一些明显的东西,或者它是一种硒虫或网络浏览器功能? 任何帮助/澄清将不胜感激!
感谢您的时间!!
答案 0 :(得分:1)
您可能错过了By
的定义:
from selenium.webdriver.common.by import By