add selenium

This commit is contained in:
Alex Kup 2023-10-23 16:17:58 +03:00 committed by GitHub
parent 2aae506af8
commit 6462607582
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -255,6 +255,15 @@ $path[-1..-10] # обратная сборка массива без сорти
Get-Process | Sort-Object -Descending CPU | select -First 10 # вывести первых 10 объектов
Get-Process | Sort-Object -Descending CPU | select -Last 10 # вывести последних 10 объектов
### oh-my-posh
winget install JanDeDobbeleer.OhMyPosh -s winget
Get-PoshThemes
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH/blue-owl.omp.json" | Invoke-Expression # montys,jblab_2021,easy-term,di4am0nd,cinnamon,jtracey93,cert
New-Item -Path $PROFILE -Type File -Force
notepad $PROFILE
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH/blue-owl.omp.json" | Invoke-Expression
### NPP
pwsh -NoExit -ExecutionPolicy Unrestricted -WindowStyle Maximized -File "$(FULL_CURRENT_PATH)"
@ -392,7 +401,7 @@ $ping = "ping"
### Специальные символы
\d # число от 0 до 9 (20-07-2022 эквивалент: "\d\d-\d\d-\d\d\d\d")
\D # обозначает любой символ, кроме цифры. Удаления всех символов, кроме цифр: [int]$("123 test" -replace "\D","")
\D # обозначает любой символ, кроме цифры. Удаления всех символов, кроме цифр: [int]$("123 test" -replace "\D")
\w # буква от "a" до "z" и от "A" до "Z" или число от 0 до 9
\s # пробел, эквивалент: " "
\n # новая строка
@ -2489,49 +2498,44 @@ irm http://localhost:8080/api/service -Method Post -Body @{"ServiceName" = "AnyD
# Selenium
.\nuget.exe install Selenium.WebDriver
Copy-Item -Path .\WebDriver.dll -Destination $home\Documents\Selenium\ # версия 4.9.0 для .NET 4.8
Copy-Item -Path .\ChromeDriver.exe -Destination $home\Documents\Selenium\ # скачать драйвер (113.0.5672.63) https://sites.google.com/chromium.org/driver/
Invoke-Expression(New-Object Net.WebClient).DownloadString("https://raw.githubusercontent.com/Lifailon/Deploy-Selenium/rsa/Deploy-Selenium-Drivers.ps1") # установка всех драйверов и Chromium подходящей версии для драйвера
Choco Upgrade GoogleChrome # обновить Google Chrome
Get-ItemProperty "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Google Chrome" | select DisplayName,DisplayVersion,InstallDate,InstallLocation # узнать версию и дату обновления
$path = "$home\Documents\Selenium\"
$ChromeDriver = "$path\ChromeDriver.exe"
$WebDriver = "$path\WebDriver.dll"
$SupportDriver = "$path\WebDriver.Support.dll"
$Chromium = (Get-ChildItem $path -Recurse | Where-Object Name -like chrome.exe).FullName
Add-Type -Path $WebDriver
Add-Type -Path $SupportDriver
try {
$ChromeOptions = New-Object OpenQA.Selenium.Chrome.ChromeOptions
$ChromeOptions.BinaryLocation = $Chromium
$ChromeOptions.AddArgument("start-maximized")
$ChromeOptions.AcceptInsecureCertificates = $True
$Selenium = New-Object OpenQA.Selenium.Chrome.ChromeDriver($ChromeDriver, $ChromeOptions)
$Selenium.Navigate().GoToUrl("https://translate.google.la/")
$path = "$env:temp\ChromeSetup.exe"
Invoke-WebRequest 'https://dl.google.com/chrome/install/latest/chrome_installer.exe' -OutFile $path
Start-Process -FilePath $path -Args "/silent /install" -NoNewWindow -Wait
$selenium.FindElements([OpenQA.Selenium.By]::CssSelector('button')) | select TagName,Text # отобразить все Button по TagName используя CSS selector
$selenium.FindElements([OpenQA.Selenium.By]::TagName('button')) # поиск по TagName
$selenium.FindElements([OpenQA.Selenium.By]::CssSelector('button')) | ? Text -match "Войти" # поиск Button по содержимому Text
$button = $selenium.FindElements([OpenQA.Selenium.By]::CssSelector('*')) | ? Text -like "Войти через Яндекс ID" # поиск во всех элементах по содержимому Text для получения нужного элемента (SPAN) для дальнейшего быстрого поиска
F12 (Dev Tools) - Ctrl+Shift+C - Copy selector/full XPath
$inputbox = $selenium.FindElements([OpenQA.Selenium.By]::CssSelector('#passp-field-login'))
$inputbox = $selenium.FindElements([OpenQA.Selenium.By]::XPath("/html/body/div/div/div[2]/div[2]/div/div/div[2]/div[3]/div/div/div/div/form/div/div[2]/div[2]/div/div[2]/span/input"))
$inputbox | gm -MemberType method
$path = "$home\Documents\Selenium"
if (($env:Path -split ';') -notcontains $path) {
$env:Path += ";$path"
$buttons = $selenium.FindElements([OpenQA.Selenium.By]::TagName('button')) # найти все элементы по TagName
$buttons = $selenium.FindElements([OpenQA.Selenium.By]::CssSelector('button')) # найти все Button используя CSS selector
$Image = $buttons | Where-Object Text -Match "Изображения" # отфильтровать элементы по Label или Text
$Image.Click() # нажать на Button
$Text = $buttons | Where-Object Text -Match "Текст"
$Text.Click()
$textarea = $Selenium.FindElements([OpenQA.Selenium.By]::TagName("textarea")) # найти все элементы с тэгом textarea
$textarea.Count # количество найденных элементов
$text1 = $textarea | Where-Object ComputedAccessibleLabel -like "Исходный текст" # отфильтровать по Lable
$text1 = $textarea | Where-Object ComputedAccessibleRole -like combobox # отфильтровать по роли
$text1 = $selenium.FindElements([OpenQA.Selenium.By]::ClassName("er8xn")) # найти элемент по имени класса (class="")
$text1.SendKeys("Hello") # ввести текст в поле
Start-Sleep 1
$text2 = $selenium.FindElements([OpenQA.Selenium.By]::ClassName("ryNqvb"))
$out = $text2.Text # получить результат перевода из второго textarea
Write-Host $out -ForegroundColor Green
}
finally {
$Selenium.Close()
$Selenium.Quit()
}
Import-Module "$path\WebDriver.dll" # Add-Type -Path "$path\WebDriver.dll"
$selenium_options = New-Object OpenQA.Selenium.Chrome.ChromeOptions
$selenium_options.AddArgument('start-maximized')
$selenium_options.AcceptInsecureCertificates = $True
$selenium = New-Object OpenQA.Selenium.Chrome.ChromeDriver($selenium_options)
# $selenium = New-Object OpenQA.Selenium.Chrome.ChromeDriver
$selenium.Navigate().GoToURL('https://yandex.ru')
$selenium.FindElements([OpenQA.Selenium.By]::CssSelector('button'))[2].Click() # нажать на кнопку "Войти"
$button = $selenium.FindElements([OpenQA.Selenium.By]::CssSelector('SPAN')) | ? Text -like "Войти через Яндекс ID"
$button.Click()
($selenium.FindElements([OpenQA.Selenium.By]::CssSelector('Button')))[1].Click()
$inputbox = $selenium.FindElements([OpenQA.Selenium.By]::CssSelector('input')) | ? ComputedAccessibleRole -like "textbox"
$inputbox.Click()
$inputbox.Clear()
$inputbox.SendKeys("+79997772211")
$inputbox.Submit()
$selenium.Close()
$selenium.Quit()
# IE