Как нажать кнопку на веб-странице скриптом в Powershell - PullRequest
0 голосов
/ 13 марта 2020

Я хочу нажать кнопку «Копировать перевод» на translate.google.com по сценарию, но не могу найти его ID или позвонить без идентификатора.

Я пытался:

.parsedhtml.body.GetElementsByClassName()

.parsedhtml.body.GetElementsById()

но я не имею ни малейшего представления, как найти подходящую фразу на такой сложной веб-странице. (Я новичок в powershell.) Я нашел div, в котором есть эта кнопка.

Текущий код:

$text= 'Some text to translate'
$URI = 'https://translate.google.pl/#en/pl/'

$page = Invoke-WebRequest -Uri $URI$text -method get

$selector= 'tlid-copy-translation-button copybutton jfk-button-flat source-or-target-footer-button right-positioned jfk-button-hover jfk-button-active jfk-button-focused jfk-button-jfk-button-clear-outline'

$page.ParsedHtml.body.getElementsByTagName('div') | 
Where {$_.getAttributeNode('class').Value -eq $selector}
$submitButton.click()

$text2= Get-Clipboard
Write-Output $text2

1 Ответ

1 голос
/ 13 марта 2020

Это действительно просто, если вы знаете, какой элемент нужен. Например, посмотрите это обсуждение вопросов и ответов StackOverflow, так как оно будет похоже на то, что вам нужно, и немного больше.

Заполните имя пользователя / пароль на веб-странице с помощью Powershell

Перемещение элементов формы сайта, а не элементов Inte rnet Explorer

$url = 'https://pwpush.com'

($FormElements = Invoke-WebRequest -Uri $url -SessionVariable fe)   

<#
    StatusCode        : 200
    StatusDescription : OK
    Content           : <!DOCTYPE html>
                        <html>
...
#>



($Form = $FormElements.Forms[0]) | 
Format-List -Force

<#
    Id     : new_password
    Method : post
    Action : /p
    Fields : ...}
#>

$Form | 
Get-Member

<#
       TypeName: Microsoft.PowerShell.Commands.FormObject

    Name        MemberType   Definition                                                        
    ----        ----------   ----------                                                        
    Equals      Method       bool Equals(System.Object obj)                                    
    GetHashCode Method       int GetHashCode()                                                 
    GetType     Method       type GetType()                                                    
    ToString    Method       string ToString()                                                 
    Action      Property     string Action {get;}                                              
    Fields      Property     System.Collections.Generic.Dictionary[string,string] Fields {get;}
    Id          Property     string Id {get;}                                                  
    Method      Property     string Method {get;}                                              
    MSDN        ScriptMethod System.Object MSDN();
#>

$Form.Fields

<#
    Key                          Value                                                                                   
    ---                          -----                                                                                   
    utf8                         ✓                                                                                       
    authenticity_token           2mebmGbAJsseDW+/TeTBXAelq1s8kH5Zgb6W14Pxtba6CyWsAM4SfVqdJWdVmu5HjxIGUCWjEGhy6fLTB38UhA==
    password_payload             Enter the Password to be Shared                                                         
    password_expire_after_days   7                                                                                       
    password_expire_after_views  5                                                                                       
    password_deletable_by_viewer on                                                                                      
    commit                       Push it

# so you end up here

Clear-Host

$password = '1234'
$loginUrl = 'https://pwpush.com'

$ie = New-Object -com internetexplorer.application
$ie.visible = $true
$ie.navigate($loginUrl)

while ($ie.Busy -eq $true) { Start-Sleep -Seconds 1 }

($ie.document.getElementById('password_payload') | select -first 1).value = $password
Start-Sleep -Seconds 1 

$ie.Document.getElementsByName('commit').Item().Click();
Start-Sleep -Seconds 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...