0
votes

Rselenium: Pourquoi ne puis-je pas envoyer de mot de passe à ce champ de connexion (Java?)?

J'essaie de gratter Ce site Web à l'aide dersenium. Envoi de texte à d'autres éléments fonctionne, mais le champ de connexion me donne des noix. Je pense que c'est peut-être parce que c'est en Java (au moins les sélecteurs de CSS dans SelectorGadget disent .j_username & .j_password) mais je ne peux pas sembler comprendre comment traiter avec cela.

Cela ne me dérangerait pas de vous connecter manuellement mais je ne peux pas non plus comprendre comment cela fonctionne =). P>

remDr <- RSelenium::remoteDriver(remoteServerAddr = "localhost",
                                     port = 4445L,
                                     browserName = "chrome")
    remDr$open()

remDr$navigate("https://smd.ch/SMDView/log/index.jsp")
login_name <- remDr$findElement(using = "xpath", "//*[contains(concat( ' ', @class, ' ' ), concat( ' ', 'j_username', ' ' ))]")
login_name$clickElement()
login_name$clearElement()
login_name$clickElement()
login_name$sendKeysToElement(list("xxxxxxx"))
login_pw <- remDr$findElement(using = "xpath", "//*[contains(concat( ' ', @class, ' ' ), concat( ' ', 'j_password', ' ' ))]")
login_pw$click()
login_pw$clearElement()
login_name$click()
login_pw$sendKeysToElement(list("xxxxxxx", "\uE007"))
remDr$screenshot(display = TRUE)


1 commentaires

Homme, j'adore Stackoverflow. Thx, vous êtes le plus grand =)!


3 Réponses :


1
votes

La page contient plusieurs connexions de connexion, au moins une pour mobile et une pour le bureau. Selon la taille de l'écran simulé / l'agent utilisateur, un seul identifiant est visible l'autre est invisible. Pour obtenir le login pour le bureau, utilisez les expressions XPath suivantes:

//*/div[@class='login_screen']//*[contains(@class,'j_username')
//*/div[@class='login_screen']//*[contains(@class,'j_password')


0 commentaires

1
votes

Il semble XPath code> Problème suivant XPath pour Nom d'utilisateur code> et Mot de passe code>.

//div[@class='login_screen']//input[@name='j_username']

//div[@class='login_screen']//input[@name='j_password']


0 commentaires

1
votes

semble que vous étiez assez proche. Éventuellement les stratégies de localisateur em> que vous utilisiez identifie plusieurs éléments et d'appeler ClearElement () code>, clickelement () code> et sendkyStoElement () essayait d'interagir avec le premier élément correspondant dans

//div[@class='login_screen']//input[@class='inputfield j_password' and @name='j_password']


0 commentaires