Cliquez sur <BUTTON> en HTML de la page
<button type="submit">Login</button>
Je suis en train de cliquer/déposer le bouton ci-dessus à l'aide de Windows Powershell. J'ai essayé le code suivant:
$submitButton = $doc.documentElement.getElementsByClassName('button') |
Select-Object -First 1
$submitButton.click()
qui ramène cette erreur:
Vous ne pouvez pas appeler une méthode sur une expression de valeur null. ps1:15 char:1 + $submitButton = $doc.documentElement.getElementsByClassName ("bouton") | ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull Vous ne pouvez pas appeler une méthode sur une expression de valeur null. ps1:16 char:1 + $submitButton.cliquez sur() + ~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull
J'ai aussi essayé ce code:
$loginBtn = $ie.Document.getElementsById('input') |
Where-Object {$_.Type -eq 'button' -and $_.Value -eq 'LoginButton'}
$loginBtn.click()
mais cela apporte aussi la même erreur qu'avant.
mon powershell code en entier:
$username='USERNAME'
$password='PASSWORD'
$ie = New-Object -ComObject 'internetExplorer.Application'
$ie.Visible= $true
$ie.Navigate("URL EXAMPLE")
while ($ie.Busy -eq $true){Start-Sleep -seconds 1;}
$Open = $ie.Document.getElementByID('has-account')
$Open.click()
$usernamefield = $ie.Document.getElementByID('login-usr').value = $username
$passwordfield = $ie.Document.getElementByID('login-pass').value = $password
$submitButton = $doc.documentElement.getElementsByClassName('button') | Select-Object -First 2
$submitButton.click()
MODIFIER
Voici la sortie de powershell getelementbytagname. Notez qu'il n'est pas un nom de classe ou l'ID, comment fait-il cliqué?
className :
id :
tagName : BUTTON
parentElement : System.__ComObject
style : System.__ComObject
document : mshtml.HTMLDocumentClass
sourceIndex : 60
offsetLeft : 61
offsetTop : 220
offsetWidth : 320
offsetHeight : 41
offsetParent : System.__ComObject
innerHTML : Login
innerText : Login
outerHTML : <button type="submit">Login</button>
outerText : Login
parentTextEdit : System.__ComObject
MODIFIER
<form id="sp-login-form" action="#" method="post">
<button type="button" id="fb-login-btn" class="button fb">Log in with Facebook<span style="position: absolute;"></span></button>
<em>or</em>
<div>
<label for="login-usr">Username</label>
<input type="text" name="username" id="login-usr" placeholder="Spotify username">
<label for="login-pass" class="pass">Password</label>
<input type="password" name="password" id="login-pass" class="pass" placeholder="Password">
<button type="submit">Login</button>
</div>
</form>
- Où avez -
$doc
et$ie
viennent? - Vous devrez peut-être exécuter la page web en mode de compatibilité IE8 pour faire ce travail.
Vous devez vous connecter pour publier un commentaire.
Dans le code que vous avez partagé le
$doc
variable n'est pas initialisée. Veuillez initialiser avant de l'utiliser dans la ligne ci-dessous:L'erreur sur cette ligne, c'est à dire
null-valued expression
erreur est due au fait que$doc
est nul à ce point.Solution de rechange: au Lieu d'essayer le code ci-dessous pour obtenir le bouton soumettre le formulaire sur la page. Vous pouvez modifier le code selon vos besoins, et la page que vous ciblez.
$submitButton = $ie.Document.getElementsById()
méthode à l'aide de l'IDENTIFIANT.le plus proche que je puisse arriver à ce type d'automatisation a été en écrivant ceci:
ce code cliqué sur tous les boutons sur la page, mais ne me connecté à la page web.
sur la poursuite de la lecture(http://www.w3schools.com/jsref/met_namednodemap_item.asp) j'ai été en optimisant le code à l'aide de:
$Lien = $ie.Document.getElementsByTagName("bouton")| where-object {$_.type -eq "soumettre"}
$Lien.le point(2).cliquez sur()