0
votes

Comment récupérer le téléchargement de ping et le temps de téléchargement des tests de navigateur?

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).

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.

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.

Firefox: "/ 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 "

chrome: "// [@ 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 "

Chrome:

" // DIV [@ @ Class = 'Résultat-Élément Résultat-Élément-Ping-Ping Mise à jour'] / DIV [2] / SPAN "

Autre question est comment puis-je attendre qu'une page puisse charger complètement une page. Cette méthode webdiverwait (pilote, quelques secondes) ne fonctionne pas pour moi et je dois utiliser temps.sleep ()

erreur: selenium.common.Exception.noschelementException: message: aucun élément de ce type xxx


2 commentaires

Pouvez-vous mentionné quel texte ê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


5 Réponses :


1
votes

Utilisez les localisateurs CSS suivants pour identifier les valeurs:

Télécharger: *. Résultat-Data-Large.Number.Result-Data-Valeur.Download-Vitesse *

Téléchargement: *. Résultat-Data-Large.Number.Result-Data-Valeur.Upload-vitesse *

ping: *. Résultat-Data-Large.Number.Result-Data-Valeur.ping-vitesse *

Utilisation de GetText () , 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.


1 commentaires

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 * ") => non de ce type élément = pilote.find_element_by_css_selector (" *. Résultat-Data-Data-Lar.Result-Data-Value vitesse * "). Gett ext () => non de ce type



1
votes

Essayez avec: é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] / ")

Peut-être que vous devez également prendre une exception pour: NosuchelementException cas.


0 commentaires

1
votes

J'ai testé ces sélecteurs CSS et ils fonctionnent à la fois chrome et à la fois. xxx

Si vous souhaitez savoir quand la page est effectuée en cours de chargement, vous pouvez attendre que l'URL passe de l'URL. https://www.speedtest.net à https://www.speedtest.net/results/ . J'utiliserais simplement webdiverwait et url_contains ("résultats") , par exemple xxx

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 .


2 commentaires

Oui, vous avez raison, mais j'ai utilisé pilote.get ("https://www.speedtest.net/results") et j'ai utilisé le temps.sleep (). Je pense que le problème pourrait être le fait que j'ai utilisé webdiverwait (pilote, 10) sans jusqu'à (EC.URL_Contains ("Résultats")) . 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.



2
votes

Pour automatiser les SpeedStts, vous pouvez utiliser la solution suivante:

  • bloc de code: XXX

  • Sortie de la console: XXX

  • Snapshot de navigateur:

     bord_again


12 commentaires

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 ()


@Sd ligne 5-8 était configuration pour chromedriver / chrome combo pour une performance optimisée. Au cas où vous utilisez Edge Browser Vous pouvez les omettre. Le reste du code devrait rester même. La bannière 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 . 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 aussi si vous conservez le navigateur chrome maximisé 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 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


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 et chrome v73.x . 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 , téléchargez et Télécharger la valeur , je vous suggère de soulever une nouvelle question pour le bannière problème. Stackoverflow Les contributeurs seront heureux de vous aider.



0
votes
    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

0 commentaires