Selenium WebDriverWait在Web报废时返回Python上的错误

时间:2016-11-20 09:58:14

标签: python-3.x selenium web-scraping

我正在为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功能会更好。

我是否会遗漏一些明显的东西,或者它是一种硒虫或网络浏览器功能? 任何帮助/澄清将不胜感激!

感谢您的时间!!

1 个答案:

答案 0 :(得分:1)

您可能错过了By的定义:

from selenium.webdriver.common.by import By