-5
votes

Envoi de message sur Table en direct YouTube avec sélénium avec python

J'essayais de faire un script à l'aide de Python et de sélénium, de spamez un massage sur YouTube en direct pour un cadeau, j'ai pu faire la majeure partie de la tâche avec succès jusqu'à la ligne (33), où j'essayais de localiser La boîte de discussion en direct YouTube par ( .Find_element_by _... ?) Il ressort de toutes sortes d'erreurs comme, AttributeError: l'objet "webDriver" n'a pas d'attribut ou Impossible de localiser l'élément_by _...? 'Find_Element_By_text, XPath, ID.Class, etc xxx


1 commentaires

Le piratage est un moyen fin et noble d'apprendre le codage, mais le piratage nécessite la recherche . Dumping d'une goutte de code incroyable dans une question et parlant vaguement sur les erreurs qu'elle produit ne va pas obtenir beaucoup de traction ici. Coller à un problème spécifique et travailler de la part connu de l'inconnu. Montrez le message d'erreur exacte que vous obtenez, ainsi que des détails que nous devrions comprendre ce que vous essayez. N'oubliez pas non plus que chaque navigateur a un mode de développeur. Vous devriez l'utiliser.


3 Réponses :


0
votes

Au lieu de rechercher l'élément par son texte, vous pouvez utiliser son XPath comme vous l'avez fait auparavant. Je viens de regarder la chatbox pour un YT Livestream et le XPath semble être appelé // * [@ Id = "entrée"]

EDIT: En outre, il pourrait y avoir quelque chose de délicat où vous devez d'abord cliquer sur l'élément avant de pouvoir entrer du texte.


1 commentaires

Merci pour la réponse, j'ai essayé le #Xpath ('// * [@ @ id = "entrée"]') Il n'a pas fonctionné de me montrer (selenium.common.Exception.noschelementException: Message: Impossible de localiser l'élément: / / * [@ @ ID = "entrée"]) Cette erreur et je ne sais pas comment cliquez sur l'élément d'abord :(



0
votes

n'utilise pas l'entrée [@ ID = "entrée"], elle a également été donnée pour un autre élément également. Vous ne recevrez pas l'élément. Utilisez Nom de la classe {YT-LIVE-CHAT-CHAT-CHAT-THNT-INPUT-RENTIER STYLE-STOPPORTY} Ceci est unique Vous obtiendrez l'élément par ce nom de classe. Votre texte d'envoi à un mauvais élément pilote.find_element_by_text ("dis comme somtation ..."). Send_Keys ('# pubgmobile') Ceci est une location pas une zone de texte.


5 commentaires

Merci pour la réponse, j'ai essayé class_name ('YT-Live-Live-Chat-Text-Strifler-Scope-Scope-Scope-Scope-Scope') ('' Style-Scope YT-Live-Chat-Text-Input-Strender-Scope-Scope YT-Live-Chat-Text-Input-Input-Renderer ') n'a pas fonctionné :(


Je réponds, je n'ai pas


Quelle erreur vous obtenez maintenant? Si c'est comme ne pas obtenir l'élément, augmentez le temps de sommeil ou utilisez WebDriverwait Wait = New WebDriverwait (pilote, 100); wait.until (attente);


Même sélénium.common.Exception.noschelementException: Message: Impossible de localiser l'élément:


Vous utilisez tant de classes à la fois, utilisez une seule classe unique ou tout autre sélecteur qui indiquera simplement à cet élément.



1
votes

Fondamentalement que DIV est associé à un événement "Entrée", vous devez donc envoyer l'événement "Entrée" une fois que vous avez entré la valeur dans la DIV. Voici le code que j'ai pu exécuter la console de former avec succès (FYI Ceci est JS, vous pouvez utiliser la même logique dans votre test et votre langue).

WebElement chatEle = driver.find_element(By.CSS_SELECTOR('div#input')
chatEle.sendKeys "sample data"
driver.fireEvent(chatEle,"input")


0 commentaires