J'essaie d'automatiser SpeedTestSts avec des navigateurs différents automatiquement et la partie principale du test est à l'intérieur d'une boucle. Le problème est parfois un élément qui a été sélectionné auparavant, et le script fonctionnait correctement, à l'une des prochaines étapes, exactement à la même boucle et à la même page, mais avec un nombre différent, sans aucun changement dans le XPATH , le sélénium ne peut plus choisir. Donc, je ne peux pas répéter mon test autant que je veux.
La plupart du temps, j'ai ce problème avec Edge, et je pense qu'une raison peut être, le XPath pour les éléments que j'ai trouvés à l'aide de Chrome ou de Firefox. (Je ne trouve pas le XPath au bord d'abord, j'ai beaucoup cherché à ce sujet). P>
J'ai aussi mis les différents XPath que j'utilise. En fait, je veux obtenir les valeurs numériques ou chaînes de ping, de télécharger, de télécharger l'emplacement et du serveur. P>
S'il vous plaît faites le moi savoir, comment puis-je résoudre ce problème, j'ai essayé un temps de sommeil différent et deux xpath différents. Le script me donne toujours une erreur lorsque j'essaie de sélectionner l'élément avec class_name ou CSS_SLector. P>
Firefox:
chrome:
Chrome: p> Autre question est comment puis-je attendre qu'une page puisse charger complètement une page. Cette méthode erreur:
selenium.common.Exception.noschelementException: message: aucun élément de ce type p> "/ html / corps / div [3] / div [2] / div / div / div / div [3] / div [1] / div [3] / div (3] / div / div [3] / div / div [3] / div / div [1] / div [2] / div [1] / div / div [2] / span " code> p>
"// [@ id =" conteneur '] / div [2] / div / div / div / div [3] / div [1] / div [3] / div / div [3] / div DIV [1] / DIV [2] / DIV [1] / DIV / DIV [2] / SPAN " CODE> P>
" // DIV [@ @ Class = 'Résultat-Élément Résultat-Élément-Ping-Ping Mise à jour'] / DIV [2] / SPAN " CODE> P>
webdiverwait (pilote, quelques secondes) code> ne fonctionne pas pour moi et je dois utiliser
temps.sleep () code> p>
5 Réponses :
Utilisez les localisateurs CSS suivants pour identifier les valeurs: P>
Télécharger: Téléchargement: ping: Utilisation de *. Résultat-Data-Large.Number.Result-Data-Valeur.Download-Vitesse * Code> P>
*. Résultat-Data-Large.Number.Result-Data-Valeur.Upload-vitesse * code> p> p>
*. Résultat-Data-Large.Number.Result-Data-Valeur.ping-vitesse * code> p> p>
GetText () code>, vous pouvez récupérer leurs valeurs. Attendez qu'un élément de la page soit visible pour vous assurer que la page est chargée avec succès. P>
Merci de votre réponse, même j'augs l'heure de sommeil, et j'ai utilisé votre suggestion que je reçois à nouveau une erreur: element = pilote.find_element_by_csss_selector ("*. Résultat-Data-Large.Lum Ber.Result-lavie E.ping-vitesse * ") code> => non de ce type
élément = pilote.find_element_by_css_selector (" *. Résultat-Data-Data-Lar.Result-Data-Value vitesse * "). Gett ext () code> => non de ce type
Essayez avec: Peut-être que vous devez également prendre une exception pour: élément = pilote.find_element_by_xpath ("/ html / corps / div [3] / div [2] / div / div / div / div [3] / div [1] / div [3 ] / div / div [3] / div / div [1] / div [2] / div [1] / div / div [2] / ") code> p> p>
NosuchelementException code> cas. p>
J'ai testé ces sélecteurs CSS et ils fonctionnent à la fois chrome et à la fois. Si vous souhaitez savoir quand la page est effectuée en cours de chargement, vous pouvez attendre que l'URL passe de l'URL. Il y a d'autres approches dans < Un href = "https://stackoverflow.com/questions/36316465/what-is-the-best-way-a-check-url-change-pyth-selenium-in-python"> Cette question . p> p> https://www.speedtest.net code> à
https://www.speedtest.net/results/
webdiverwait code> et
url_contains ("résultats") code>, par exemple p>
Oui, vous avez raison, mais j'ai utilisé pilote.get ("https://www.speedtest.net/results") code> et j'ai utilisé le temps.sleep (). Je pense que le problème pourrait être le fait que j'ai utilisé
webdiverwait (pilote, 10) code> sans
jusqu'à (EC.URL_Contains ("Résultats")) Code>. Mais, je ne comprends toujours pas pourquoi parfois un élément peut être trouvé et parfois cela ne me donne aucune erreur d'élément de ce type !!! Merci pour votre réponse. J'espère que ça marche devant Tommorow dans le laboratoire.
Vous pouvez simplement naviguer vers l'URL de base et cliquer sur le bouton Go. Le reste du code fonctionnera bien.
Pour automatiser les SpeedStts, vous pouvez utiliser la solution suivante:
Merci pour votre réponse, c'est sûr que je peux avoir une idée. Mais le problème avec votre code pour moi est, d'abord, je dois supprimer un! bannière de la page, puis je peux Continuez. Il arrive également quand je dois obtenir les résultats de la page de résultat. Je ne sais pas comment avez-vous résolu ce problème, mais pour la ligne 5-8 que vous avez écrite n'a pas fonctionné. @Debanjanb
Si vous lisez ce commentaire, savez-vous pourquoi je vois ces éléments en chrome et à Firefox, mais je ne le vois pas à bord? est un meilleur moyen de le supprimer sauf: pilote.find_element_by_xpath ("// * [@ @ ID = '_ Bouton Evidon-Banner-Bookie']") "Cliquez () Pilote.find_element_by_xpath (" // * [@ id = '_ evidon-l3'] / bouton ") .Cliquez sur () code>
@Sd ligne 5-8 i> était configuration pour chromedriver i> / chrome i> combo pour une performance optimisée. Au cas où vous utilisez Edge Browser i> Vous pouvez les omettre. Le reste du code devrait rester même. La bannière i> ne gêne tout simplement pas les lectures. Vous n'avez donc pas besoin de gérer cela non plus. Cependant, j'ai mis à jour la réponse en utilisant Edge Browser i>. Laissez-moi savoir le statut.
Le code a fonctionné pour le bord correctement et plus rapide. Mais pour! chrome et! Firefox Still Banner fait un problème. J'ai ajouté la capture d'écran. Je veux dire que je devrais les gérer.
Le même code fonctionnera sans faille sur chrome i> aussi si vous conservez le navigateur chrome i> maximisé b> comme je l'ai suggéré dans la version initiale de ma réponse où vous eu une question croisée pour ligne 5-8 b> que j'ai expliquée dans mon commentaire sous la ligne 5-8 était la configuration pour chromeRiver / chrome combo pour des performances optimisées b>
J'ai un problème dans le choix d'un serveur et d'un emplacement spécifiques. Il y a plus d'un serveur pour un emplacement. J'essaie de cliquer sur mon élément de désir par la souris Hover. J'apprécie vraiment que vous aidez si vous pouvez me donner une suggestion que je mets la partie du code dans un autre commentaire. Le code est inséré là-bas d'une manière qui peut gérer la limitation des caractères pour commenter @Debanjanb.
Ok je mets une autre question, merci encore
Malheureusement, même en ajoutant que les lignes, le code ne fonctionne toujours pas pour chrome
Hmmm, même j'ai la même configuration chromedriver v2.46 i> et chrome v73.x i>. Pouvez-vous me dire qui est cet élément qui chevauche notre élément désiré? D'une manière ou d'une autre, je ne trouve pas l'élément pendant mes tests ...
Sur une autre note, si vous êtes sur un réseau plus lent / plus rapide, pouvez-vous augmenter le délai d'attente à 20 secondes?
Ce Bannière Numéro numéro un, fait un problème à Chrome, Firefox et Safari, Edge n'a pas ce problème. Pour la répétition de l'essai dans Firefox, je dois supprimer le numéro 2 (Confidentialité) de la page. En outre, j'ai augmenté le délai d'attente mais n'a pas fonctionné. Je travaille sur 100 Mbps, l'objectif est de tester 1 Gbps.
@SD Comme cette question a été principalement axée sur la récupération du ping code>,
téléchargez code> et
Télécharger la valeur code>, je vous suggère de soulever une nouvelle question pour le bannière i> problème. Stackoverflow Les contributeurs seront heureux de vous aider.
WebDriverWait driverWait = new WebDriverWait(driver, 30000); driver.get("https://www.speedtest.net/"); WebElement goLink = driver.findElement(By.cssSelector(".js-start-test.test-mode-multi")); driverWait.until(ExpectedConditions.elementToBeClickable(goLink)); goLink.click(); By download = By.cssSelector(".result-data-large.number.result-data-value.download-speed"); By upload = By.cssSelector(".result-data-large.number.result-data-value.upload-speed"); By ping = By.cssSelector(".result-data-large.number.result-data-value.ping-speed"); driverWait.until(ExpectedConditions.urlMatches("https://www.speedtest.net/result/[0-9]")); String downloadSpeed = driver.findElement(download).getText(); String uploadSpeed = driver.findElement(upload).getText(); String pingValue = driver.findElement(ping).getText(); System.out.println("Download: "+downloadSpeed + "\nUpload: "+ uploadSpeed + "\n Ping: "+pingValue); Output Download: 78.82 Upload: 45.93 Ping: 23
Pouvez-vous mentionné quel texte code> code> êtes-vous en train de soigner?
Désolé, mais je n'ai pas compris votre question ?! En fait, je veux obtenir les valeurs numériques ou chaînes de Ping, téléchargez, téléchargez l'emplacement et le serveur.
2 SPAN> CODE>