J'essaie d'analyser une table HTML et de cliquer sur chaque lien hypertexte dans la troisième colonne (où il est indiqué href = "JavaScript: showpaycheck). Il y a une tonne de poteaux qui montrent comment analyser les tables, mais je peux" T Trouvez tout ce qui ressemble à cette table que j'utilise:
NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="form1"]/div[3]/div/div/table"}
3 Réponses :
Votre xPath peut être plus précis, vous suggérerait d'aller avec une approche incrémentielle, essayez d'abord avec: si ci-dessus renvoie true p>
Merci Pooja. Je commence par votre suggestion et j'ai compris que la table n'était pas due où être trouvé. C'était dans un iframe. Voir ma réponse pour plus de détails.
Oui, les iframes sont la réponse lorsqu'un XPath simple ne fonctionne pas ... Glad pourrait aider.
Avez-vous essayé d'utiliser des expressions régulières?
Utiliser sélénium strong>: p> update: strong> si le Le contenu est à l'intérieur d'un iframe fort>, en utilisant
Activez la classe Options de WebDriver et la fenêtre du navigateur Web ne sera pas ouverte.
J'ai essayé Regex et ça ne le trouve pas. J'ai essayé l'impression (impression (ELEM.TEXT)) Tous les éléments, mais je n'ai aucun résultat.
@Stevegon maintenant je peux comprendre ce que ça se passe!. Pouvez-vous voir le HTML iframe b> tag? Suivez le SRC B> Atributte, c'est un lien. À l'intérieur de ce lien sera une autre page contenant un script ou JavaScript qui crée l'ensemble du code HTML, à l'intérieur de la balise IFrame. Le iframe b> générer un HTML à l'intérieur d'un HTML, usure non? En fait, j'ai trouvé des pages HTML avec cette structure. Encore une fois, suivez le lien SRC B> à l'intérieur de l'IFRMA B> et jetez un coup d'œil à ce nouveau code HTML, vous trouverez probablement une syntaxe JSON, utilisez REGEX à FecTH.
@Stevegon Pouvez-vous partager les additionneurs de lien SRC B> ou le code HTML à l'intérieur du lien SRC B>? Parfois, il est difficile de récupérer des données dans un iframe.
@Stevegon En outre, si vous téléchargez tout le code source HTML de SELENIUM B>, vous ne trouverez pas la section iframe B>. C'est pourquoi vous ne pouvez récupérer aucune donnée à l'aide de REGEX B> ou des méthodes de recherche de sélénium.
La table est dans un iframe. Vous devez le sélectionner. Après Ce , j'ai édité le code comme suit:
wait = WebDriverWait(driver, 10) wait.until(eConds.frame_to_be_available_and_switch_to_it((wdBy.CSS_SELECTOR, "iframe[id='hr2oScreen']:nth-of-type(1)"))) for table in wait.until(eConds.presence_of_all_elements_located((wdBy.CSS_SELECTOR, "table tr")))[1:]: data = [item.text for item in table.find_elements_by_css_selector("th,td")] print(data)
Pourriez-vous fournir l'URL, s'il vous plaît ??
Vérifiez si la table est à l'intérieur d'un élément de cadre / iframe
L'URL est derrière une connexion. Permettez-moi de gratter la page entière.