Sélénium: Élément non cliquable ... Autre Élément Recevoir Cliquez sur
Lors de l'exécution de Sélénium tests sur mon projet Django, j'ai commencé à obtenir de l'erreur:
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>
Il est étrange pour deux raisons: d'Abord, les tests déjà passé et je n'ai pas modifié la partie de la base de code. Deuxièmement, lorsque le Sélénium piloté par la Fenêtre de Firefox s'ouvre et j'maximiser la page, les tests passent. Mais quand je laisse le Sélénium exécution des tests avec le navigateur Firefox et pas maximisée, ils échouent.
Je n'utilise pas de fantaisie javascript (juste la base de Bootstrap 3 modèle), juste un bon vieux html et css. Je suis l'aide de Django 1.9 sur Python 3.4. J'ai couru pip pour vérifier les mises à niveau de Sélénium, et je suis à jour.
Voici un lien pastebin le code html de la sortie de mon point de vue et le modèle.
L'une de l'échec des tests est:
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()
La dernière ligne de produit l'erreur:
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>
OriginalL'auteur jejy2343 | 2016-02-25
Vous devez vous connecter pour publier un commentaire.
Votre Réponse se trouve dans votre question.
not clickable at point - (61, 24.300003051757812)
C'est là un autre élément est -Other element would receive the click: <a class="navbar-brand" href="#"></a>
où le clic est tentée. Puisque vous n'avez pas de maximiser le navigateur, vous n'êtes pas en mesure d'obtenir le point de co coordonnées correctement.Je crois dernière sélénium défile automatiquement.
OriginalL'auteur Makjb lh
Extrêmement en retard à la fête, mais j'ai une solution extrêmement simple qui a fonctionné pour moi. Au lieu de le faire .cliquez sur(), il suffit de faire
Avec l'élément sélectionné, la barre d'espace permet de basculer la sélection. A fonctionné pour moi!
Vous êtes l'homme/femme.
Cela m'a sauvé la vie, et, éventuellement, la vie des autres.
Super! merci! J'utilise
Keys.RETURN
sur les liens/boutons, semble faire de semblable.ou même
send_keys(' ')
🙂OriginalL'auteur Major Major
A couru dans un problème similaire (même erreur) et essayé majeur Majeur de la solution ci-dessus en utilisant send_keys + envoi de la barre d'espace pour simuler un clic plutôt qu'à un clic de souris.
Majeur majeur de la solution:
J'ai frappé une nouvelle erreur d'essayer de l'exécuter, pointant vers 'le sélénium'. Supprimer ce mot-clé dans le code de la correction du problème, et m'a permis d'cliquez sur l'élément.
Finale réussie extrait de code utilisé:
OriginalL'auteur Will Rus
Cela a plus à voir avec des éléments " couvrant les uns les autres. Qui a de sens que si elle se passe sur la non-fenêtres maximisées. Peut également se produire si il y a un popup/div flottante ou un autre élément couvrant l'élément que vous êtes en train d'essayer de cliquer sur.
Rappelez-vous, le sélénium est imitant l'utilisateur, de sorte que vous ne pouvez normalement pas faire une action de l'utilisateur n'aurait pas été capable de le faire - comme cliquer sur un élément qui est couvert par un autre.
Un potentiel de solution de contournement pour ce qui serait d'utiliser Javascript pour trouver l'élément et cliquez sur. Exemple ici:
Lemme résumer ci-dessus:: Une INTERFACE Web ne doit pas superposition de ses éléments, lorsqu'un utilisateur essaie de l'utiliser . Je dirais qu'il peut être considéré comme un Look et un défaut
Merci pour la réponse rapide. Je pense que ce qui se passe est que lorsque la fenêtre de Firefox n'est pas maximisée, c'est le défilement vers le bas à l'endroit où le lien serait dans le coin supérieur gauche. Mais la barre de navigation est en haut de la page, même lorsque vous êtes à défilement, donc c'est aussi dans le coin supérieur gauche. C'est une supposition ... je ne suis pas sûr de savoir exactement comment le sélénium poignées de défilement lors de la sélection de liens.
Je ne suis pas sûr si le Sélénium est automatiquement le défilement de l'élément. Essayez d'exécuter et vérifier. Essayez également de faire défiler de manière explicite . Une autre chose à essayer ce - afficher les coordonnées où est l'élément vous obtenez l'erreur, obtenir à la fois des éléments et d'affichage point de co ou dinates. Qui va définitivement vous dire. Si ma réponse ci-dessus est de bon ne peut vous upvote moi.
Je suis d'accord qu'un tel comportement de l'INTERFACE utilisateur doit être considéré comme un défaut, en fonction de ce qui est considéré comme la résolution minimale pour le site. Et oui, en se concentrant sur un élément avant de faire quelque chose avec elle, c'est une bonne pratique. Le sélénium n'est pas toujours faites défiler jusqu'à un élément, en fonction de l'action.
OriginalL'auteur aneroid
Dans mon Capybara projet, je reçois souvent des "éléments" et "non cliquable" erreurs. La raison de ce genre d'erreur, c'est que la page web ne prend pas en charge assez bien pour localiser l'élément. Comme vous l'avez mentionné que les tests déjà passé et vous n'avez pas modifié la partie de la base de code, de Sorte que vous pouvez faire les choses suivantes pour faire passer à travers ce:
OriginalL'auteur Sarabjit Singh
Depuis récemment Firefox pilote vérifie que l'élément en cliquant sur la position de l'élément est-il censé être cliqué.
Cette erreur signifie que lorsque le conducteur essaie de cliquer sur l'élément, une autre est sur le dessus de cela.
Malheureusement, le chauffeur n'a pas fait défiler automatiquement les conteneurs et génère cette erreur à la place.
Sur la manière de traiter ce problème est de faire défiler l'élément dans le centre de l'écran et essayez de cliquer à nouveau.
Monkey patch pour la méthode de clic :
OriginalL'auteur Florent B.
J'ai eu le même problème: à cause d'une fenêtre pop-up, l'élément que j'ai eu à cliquer sur la dérive hors de l'écran et de devenir unclickable.
Faites défiler la page vers l'élément travaillé.
En Python:
OriginalL'auteur rp2017