我正在使用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会产生空白。所以任何想告诉我阅读文档的人都需要告诉我正确的文档在哪里。
答案 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