Selenium:元素不可点击......其他元素将收到点击

新手上路,请多包涵

在我的 Django 项目上运行 Selenium 测试时,我开始遇到错误:

 selenium.common.exceptions.WebDriverException: Message: Element is not clickable at point (61, 24.300003051757812). Other element would receive the click: <a class="navbar-brand" href="#"></a>

这很奇怪,原因有二:首先,之前的测试已经通过,而我还没有编辑那部分代码库。其次,当 Selenium 驱动的 Firefox 窗口弹出并且我最大化页面时,测试通过了。但是当我让 Selenium 测试在 Firefox 浏览器未最大化的情况下运行时,它们会失败。

我没有使用任何花哨的 javascript(只是基本的 Bootstrap 3 模板),只是普通的旧 html 和 css。我在 Python 3.4 上使用 Django 1.9。我已经运行 pip 来检查对 Selenium 的升级,并且我是最新的。

这是指向我的视图和模板输出的 html 的 pastebin 链接

失败的测试之一是:

 def test_create_task_and_check_that_it_shows_up_in_the_task_manager_index_and_filter(self):
        # Create user
        self.user = User.objects.get(username=test_superuser_username)
        # Log the user in
        self.log_user_in(user_object=self.user, password=test_superuser_password)
        self.browser.implicitly_wait(10)
        # Pull up the main task manager page
        self.browser.get(str(self.live_server_url) + reverse('task_manager:index'))
        # Make sure we go to the task manager index
        task_index_url = str(self.live_server_url) + reverse('task_manager:index')
        self.browser.get(task_index_url)
        self.browser.implicitly_wait(4)
        self.assertTrue(str(task_index_url) == self.browser.current_url,
                        msg=('Assertion that current_url is %s failed. Current_url is %s' %
                             (str(reverse('task_manager:index')), self.browser.current_url)))
        # Click the 'add task' button on the sidebar
        add_task_taskbar_button = self.browser.find_element_by_name('add_task_sidebar_link')
        add_task_taskbar_button.click()

最后一行产生错误:

 ERROR: test_create_task_and_check_that_it_shows_up_in_the_task_manager_index_and_filter (tasks.tests.test_functional.SeleniumTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/mint/Python_Projects/[project_name]/tasks/tests/test_functional.py", line 94, in test_create_task_and_check_that_it_shows_up_in_the_task_manager_index_and_filter
    add_task_taskbar_button.click()
  File "/home/mint/Python_Projects/venv/lib/python3.4/site-packages/selenium/webdriver/remote/webelement.py", line 75, in click
    self._execute(Command.CLICK_ELEMENT)
  File "/home/mint/Python_Projects/venv/lib/python3.4/site-packages/selenium/webdriver/remote/webelement.py", line 469, in _execute
    return self._parent.execute(command, params)
  File "/home/mint/Python_Projects/venv/lib/python3.4/site-packages/selenium/webdriver/remote/webdriver.py", line 201, in execute
    self.error_handler.check_response(response)
  File "/home/mint/Python_Projects/venv/lib/python3.4/site-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: Element is not clickable at point (61, 24.300003051757812). Other element would receive the click: <a class="navbar-brand" href="#"></a>

原文由 jejy2343 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 936
2 个回答

你的答案就在你的问题之内。

  1. 错误显示’add_task_sidebar_link’ not clickable at point - (61, 24.300003051757812) 这是另一个元素所在的地方- Other element would receive the click: <a class="navbar-brand" href="#"></a> 尝试点击的地方。由于您没有最大化浏览器,因此无法正确获取点坐标。
  2. 为了将来的测试不中断,请滚动到该元素。参考这篇文章( Selenium python unable to scroll down )。检查动作链( http://selenium-python.readthedocs.org/api.html#module-selenium.webdriver.common.action_chains

原文由 Makjb lh 发布,翻译遵循 CC BY-SA 3.0 许可协议

参加派对已经很晚了,但我有一个非常简单的解决方案对我有用。而不是做.click(),简单地做

.send_keys(selenium.webdriver.common.keys.Keys.SPACE)

选择元素后,空格键可以切换选择。为我工作!

原文由 Major Major 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题