python selenium TimeUnit - 从哪里导入

时间:2016-11-16 09:54:11

标签: python selenium

我正在使用Python selenium 3.0.1版,而不是说

driver.implicitly_wait(10)

我们现在必须说

driver.implicitly_wait(10, TimeUnit.SECONDS)

这给了我错误......

NameError:name' TimeUnit'未定义

所以我需要导入TimeUnit,但是从哪个(什么模块)导入它?

https://pypi.python.org/pypi/selenium上的文档链接将我带到selenium 2文档,在搜索框中键入TimeUnit会产生空白。所以任何想告诉我阅读文档的人都需要告诉我正确的文档在哪里。

4 个答案:

答案 0 :(得分:1)

Java和python的selenium接口之间存在细微差别。 Java期望显式时间单位,而python在函数调用中隐含时间单位(例如,只有数字没有单位)。有关java和python中的代码示例,请参阅示例https://www.seleniumhq.org/docs/04_webdriver_advanced.jsp。 Timeunit库纯粹在Java中使用,您可以在此处找到文档:https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/TimeUnit.html

答案 1 :(得分:0)

我不知道TimeUnit.SECONDS是什么,但无论它是什么implicitly_wait()只需要一个参数!

>>> help(driver.implicitly_wait)
Help on method implicitly_wait in module     selenium.webdriver.remote.webdriver:

implicitly_wait(time_to_wait) method of     selenium.webdriver.firefox.webdriver.Web
Driver instance
Sets a sticky timeout to implicitly wait for an element to be found,
   or a command to complete. This method only needs to be called one
   time per session. To set the timeout for calls to
   execute_async_script, see set_script_timeout.

:Args:
 - time_to_wait: Amount of time to wait (in seconds)

:Usage:
    driver.implicitly_wait(30)

因此,如果你尝试发送任何2个参数,你应该得到

  

TypeError:implicitly_wait()需要2个位置参数但是3个被赋予

P.S。另外,请不要忘记,在这种情况下,第一个位置参数是self,它引用了对象本身

答案 2 :(得分:0)

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException
import time

driver = webdriver.Firefox()
driver.get(url)
driver.implicitly_wait(10)

答案 3 :(得分:0)

TimeUnit是Java而不是Seelnium的APi。

使用以下命令将其导入:

导入java.util.concurrent.TimeUnit