2016-09-19 203 views
0

我试图使用Selenium WebDriverWait在Python等项目在网页上加载,但是使用任何预期的条件除了presence_of_element_located似乎导致错误Python的硒明确WebDriverWait功能只适用于presence_of_element_located

selenium.common.exceptions.WebDriverException: Message: SyntaxError: missing) in parenthetical

我想这可能是链接到网站,我是想反对,但是我得到在任何网站上同样的错误 - 见下面,我已经取代presence_of_element_locatedSNIPPIT visibility_of_element_located,我试图合作在python.org上确定搜索框的可见性。

from selenium import webdriver 
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.webdriver.common.keys import Keys 

driver = webdriver.Firefox() 
driver.get("http://www.python.org") 

try: 
    element = WebDriverWait(driver, 5).until(EC.visibility_of_element_located((By.NAME,"q"))) 
    element.send_keys("pycon") 
    element.send_keys(Keys.RETURN) 
finally: 
    driver.quit() 

完整的堆栈跟踪如下,任何帮助将不胜感激!

Traceback (most recent call last): 
    File "C:\dev\test.py", line 51, in <module> 
    element = WebDriverWait(driver, 5).until(EC.visibility_of_element_located((By.NAME,"q"))) 
    File "C:\Development\python\python35-32\lib\site-packages\selenium-3.0.0b3-py3.5.egg\selenium\webdriver\support\wait.py", line 71, in until 
    value = method(self._driver) 
    File "C:\Development\python\python35-32\lib\site-packages\selenium-3.0.0b3-py3.5.egg\selenium\webdriver\support\expected_conditions.py", line 78, in __call__ 
    return _element_if_visible(_find_element(driver, self.locator)) 
    File "C:\Development\python\python35-32\lib\site-packages\selenium-3.0.0b3-py3.5.egg\selenium\webdriver\support\expected_conditions.py", line 98, in _element_if_visible 
    return element if element.is_displayed() == visibility else False 
    File "C:\Development\python\python35-32\lib\site-packages\selenium-3.0.0b3-py3.5.egg\selenium\webdriver\remote\webelement.py", line 353, in is_displayed 
    self) 
    File "C:\Development\python\python35-32\lib\site-packages\selenium-3.0.0b3-py3.5.egg\selenium\webdriver\remote\webdriver.py", line 465, in execute_script 
    'args': converted_args})['value'] 
    File "C:\Development\python\python35-32\lib\site-packages\selenium-3.0.0b3-py3.5.egg\selenium\webdriver\remote\webdriver.py", line 236, in execute 
    self.error_handler.check_response(response) 
    File "C:\Development\python\python35-32\lib\site-packages\selenium-3.0.0b3-py3.5.egg\selenium\webdriver\remote\errorhandler.py", line 192, in check_response 
    raise exception_class(message, screen, stacktrace) 
selenium.common.exceptions.WebDriverException: Message: SyntaxError: missing) in parenthetical 

更新 - >经过几次评论下面,我已经做的版本和浏览器的一些测试,这个问题似乎隔绝到Python 3和Firefox,脚本对Python 2.7和工作在为Python的两个版本Chrome webdriver。

+0

我相信你有选择一个网络驱动程序又名铬,火狐等 – thesonyman101

+0

@ w-enzo OP已经选择Firefox作为网络驱动程序。 –

+0

复制/粘贴相同的代码,它适用于我。我正在使用Python 2.7。 –

回答

0

复制粘贴相同的代码,它的工作原理。 Dint有足够的回购发表评论,所以不得不把它放在回答部分。

0

这些细微的变化对我有用。

  1. visibility_of_element_located ===> presence_of_element_located
  2. driver.quit()===> driver.close()

请参阅以下内容:

from selenium import webdriver 
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.webdriver.common.keys import Keys 

driver = webdriver.Firefox() 
driver.get("http://www.python.org") 

try: 
    element = WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.NAME,"q"))) 
    element.send_keys("pycon") 
    element.send_keys(Keys.RETURN) 
finally: 
    driver.close() 
+0

能见度和存在之间存在差异,所以不能替代其他。 –