AttributeError: 'liste' de l'objet n'a pas d'attribut "clic" - Selenium Webdriver
Je suis en train d'utiliser le clic de commande en Selenium webdriver à l'aide de python. Mais j'obtiens l'erreur ci-dessous. Peut-on m'aider?
Traceback (most recent call last):
File "C:\Users\vikram\workspace\LDC\test.py", line 13, in <module>
driver.find_elements_by_link_text("MISCQA Misc Tests").click()
AttributeError: 'list' object has no attribute 'click'
Voici mon programme
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support.ui import WebDriverWait
import config
url = config.config.get('url')
driver = webdriver.Ie()
driver.get(url)
driver.find_elements_by_link_text("MISCQA Misc Tests").click()
driver.close()
Je pense que je suis absent quelque chose. Merci de me suggérer
- le pilote.find_elements_by_link_text("MISCQA Divers Tests") retourne la liste, pas d'objet appelable
Vous devez vous connecter pour publier un commentaire.
Merci de votre aide. J'ai trouvé la réponse par moi-même. Idée donnée par "Dan Niero"
Le problème est, je suis en utilisant
driver.find_element[s]
au lieu dedriver.find_element
. Donc, on s fait la différence. En fait, je suis à la suite de l'éclipse :(. Évidemmentdriver.find_elements_by_link_text
retourne la liste donc Si j'envoie cliquez sur l'événement il l'habitude de le comprendre.Merci pour votre aide et désolé pour mon mauvais question
-Vikram
peut-être
driver.find_elements_by_link_text("MISCQA Misc Tests")[0].click()
ou un autre indice...Je ne sais pas du Sélénium, mais je suppose que find_elements_by_link_text est de trouver plus d'une chose, ou peut-être la méthode retourne toujours une liste plutôt qu'un seul objet. Si vous êtes absolument sûr qu'un seul objet doit être le résultat de votre recherche, que de simplement utiliser [0] comme je l'ai mentionné, si vous ne pouvez pas supposer qu'il y aura un seul objet, que vous devez venir avec une forte stratégie de
La partie de votre code,
est de retour, une liste et non un objet de selenium webdriver (ce que vous voulez, objet de la classe ayant la fonction "click()" ) .
Plus susceptibles, les éléments de la liste serait les objets.
Imprimer la liste après qu'une partie du code et de vérifier si les éléments de la liste sont celles que vous avez besoin.
si vous voulez un seul élément alors u peut utiliser:
ou si vous voulez toute la liste, puis:
si l'attribut de "MISCQA Divers Tests" n'a qu'un seul,Vous pouvez essayer de modifier les éléments de l'élément dans le présent code de pilote.find_elements_by_link_text("MISCQA Divers Tests")'
Espérons que le problème sera corrigé
La déclaration
driver.find_elements_by_link_text("MISCQA Misc Tests")
renvoie une liste de WebElement certains de ce qui pourrait ne pas être cliquable.De sorte que vous aurez à effectuer une boucle sur la liste des WebElement est retourné et puis cliquez sur les éléments qui sont cliquables.
Vous pouvez vérifier si un WebElement est cliquable ou non à l'aide de la
isClickable()
fonction.Je n'ai pas posté le code car je ne connais pas Python. Espérons que cela vous aide.
J'ai trouvé ci-dessous solution que j'ai été en utilisant appiumrobotlibaray version 1.5 d'où
ce code jeter "AttributeError: 'liste' de l'objet n'a pas d'attribut 'cliquez sur' erreur
downgrade appium de la bibliothèque à la version précédente. 1.4.6
et cela fonctionne dans mon cas.