Python 单击时Webdriver WebDriverException/TimeoutException

Python 单击时Webdriver WebDriverException/TimeoutException,python,exception,selenium,click,webdriver,Python,Exception,Selenium,Click,Webdriver,我使用webdriver在iframe中单击表单上的提交按钮。基本上: self.driver.find_element_by_css_selector("[name~='field_1']").clear() self.driver.find_element_by_css_selector("[name~='field_1']").send_keys("123") self.driver.find_element_by_css_selector("[name~='field_1']").sen

我使用webdriver在iframe中单击表单上的提交按钮。基本上:

self.driver.find_element_by_css_selector("[name~='field_1']").clear()
self.driver.find_element_by_css_selector("[name~='field_1']").send_keys("123")
self.driver.find_element_by_css_selector("[name~='field_1']").send_keys(Keys.RETURN)
self.driver.switch_to_window(self.driver.window_handles[-1])
self.assertEqual(self.driver.current_url, "http://fake_address.com")
我也试过:

self.driver.find_element_by_css_selector("[name~='field_1']").clear()
self.driver.find_element_by_css_selector("[name~='field_1']").send_keys("123")
self.driver.find_element_by_css_selector("#submit-endslide").click()
self.driver.switch_to_window(self.driver.window_handles[-1])
self.assertEqual(self.driver.current_url, "http://fake_address.com")
以及:

我得到了:

Traceback (most recent call last):
  File "test_ytplayer_smoke_form.py", line 198, in testSmallFormSubmission
    self.driver.find_element_by_css_selector("[name~='field_1']").send_keys(Keys.RETURN)
  File "/home/giant/our_player/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 293, in send_keys
    self._execute(Command.SEND_KEYS_TO_ELEMENT, {'value': typing})
  File "/home/giant/our_player/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 370, in _execute
    return self._parent.execute(command, params)
  File "/home/giant/our_player/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 166, in execute
    self.error_handler.check_response(response)
  File "/home/giant/our_player/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 164, in check_response
    raise exception_class(message, screen, stacktrace)
TimeoutException: Message: u'Selenium took too long to run your command.
然后 WebDriverException:消息:u'由于以前的错误,此作业已完成

无论我选择哪种方法,当单击提交按钮时,我总是会得到一个超时; (我已经尝试将超时增加到300)


注意:当我观看测试运行时,会单击“提交”按钮并打开一个新选项卡,但由于异常,测试将永远不会通过。

正如我的评论所说,我们需要更多信息,但评论很难编辑,因此我在此处添加更多信息:

  • 尝试WebDriverWait查看开始,而不是基于时间进行等待
  • 找到时将元素存储在变量中,如:

    field_1=self.driver。通过_css_选择器(“[name~='field_1']”)查找_元素
    字段_1.清除()
    字段1.发送密钥(“123”)
    submit=self.driver.find_element_by_css_selector(“#submit endslide”)
    提交。单击()


但是尝试使用WebElementDrive和ExpectedConditions,而不是直接使用驱动程序方法

Chrome V28似乎有一个特定于浏览器的问题导致了这个问题;我更新到了最新的浏览器版本Chrome V35,这似乎已经解决了

您的回溯显示发送返回失败。在第一个示例中,您并没有单击提交按钮,而是将返回发送到输入字段。你在第二个例子中是这样做的-回溯是相同的吗。此外,您可能希望将定位的元素保存在变量中,以使代码更易于理解。此外,考虑阅读WebDriverWait和预期条件,它们使SE2使用得更平滑。如果问题与等待有关,我希望看到一个无接触的例外;“提交”按钮被单击,弹出窗口出现,但我无法访问断言,因为我在单击“提交”按钮(或单击“返回”)时收到timeoutException。此问题是Chrome V28特有的。我不知道为什么有人会使用旧浏览器,所以这个问题可以解决。
Traceback (most recent call last):
  File "test_ytplayer_smoke_form.py", line 198, in testSmallFormSubmission
    self.driver.find_element_by_css_selector("[name~='field_1']").send_keys(Keys.RETURN)
  File "/home/giant/our_player/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 293, in send_keys
    self._execute(Command.SEND_KEYS_TO_ELEMENT, {'value': typing})
  File "/home/giant/our_player/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 370, in _execute
    return self._parent.execute(command, params)
  File "/home/giant/our_player/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 166, in execute
    self.error_handler.check_response(response)
  File "/home/giant/our_player/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 164, in check_response
    raise exception_class(message, screen, stacktrace)
TimeoutException: Message: u'Selenium took too long to run your command.