Что нового

Автоматизация работы Chrome

dumoed

Знающий
Сообщения
34
Репутация
5
решил реанимировать тему, ибо удалось добиться определенных успехов на данном поприще. Для начала хотелось бы узнать у кого-нибудь получилось скомпилировать autoit скрипт, чтобы в нем запускался chromedriver.exe?
 
Автор
D

dumoed

Знающий
Сообщения
34
Репутация
5
А где сама тема ?
Отличный вопрос, уже и не вспомню, по всей видимости была, открыта, но конкретики не было. Спустя время могу кое-что отписать, но от хрома ушел на мозиллу. По большому счету принцип один и тот же. Для хрома нужен chromedriver.exe. В случае с мозиллой использую гекодрайвер (прилагается). Простейший скрипт для выдергивания значения элемента на странице.
Сообщение автоматически объединено:

Код:
#include <WindowsConstants.au3>
;#include <Date.au3>
; non standard UDF's
#include "wd_helper.au3"
#include "wd_core.au3"
#include "wd_capabilities.au3"


Local $sDesiredCapabilities, $sSession

;Run ("C:\Program Files (x86)\AutoIt3\geckodriver.exe")
Sleep (1000)

    ; Execute browser driver
    SetupGecko()
    _WD_Startup()
    $sSession = _WD_CreateSession($sDesiredCapabilities)
    ConsoleWrite("+Running: " & "OurScript" & @CRLF)
                Call("OurScript")
_WD_DeleteSession($sSession)
    _WD_Shutdown()

Func OurScript() ;OUR SCRIPT

_WD_Navigate($sSession, "https://news.com/finance/")

Sleep (700);special sleep

;While 1 ;loop to catch our element
; чтобы захватить элемент необходимо, подсмотреть его XPath, для этого следует вызвать окно Chrome DevTools (аналогично в файрфокс), выделить нужный элемент, кликнув правой клавишей мыши, вызвать контекстное меню, выбрать команду Copy , а затем Copy full XPath.
$sElement = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, "/html/body/div[3]/div[1]/section/div[1]/div[3]/div[3]/div/ul/div/div/li[1]/div[1]/span[2]")
;$sValue = _WD_ElementAction($sSession, $sElement, 'property', 'value')
$sValue = _WD_ElementAction($sSession, $sElement, "TEXT", "");тут получаем текстовое значение элемента

;Wend

EndFunc


Func SetupGecko()
    _WD_Option('Driver', 'geckodriver.exe')
    _WD_Option('DriverParams', '--log trace')
    _WD_Option('Port', 4444)

     $sDesiredCapabilities = '{"capabilities": {"alwaysMatch": {"browserName": "firefox", "acceptInsecureCerts":true}}}'
EndFunc   ;==>SetupGecko

Сообщение автоматически объединено:

запуск сайта
Код:
#include <WindowsConstants.au3>

; non standard UDF's
#include "wd_helper.au3"
#include "wd_core.au3"
#include "wd_capabilities.au3"

Local $sDesiredCapabilities, $sSession

;Run ("C:\Program Files (x86)\AutoIt3\geckodriver.exe")
Sleep (1000)
  
    SetupGecko(); Execute browser driver
    _WD_Startup()
    $sSession = _WD_CreateSession($sDesiredCapabilities)

    ConsoleWrite("+Running: " & "OurScript" & @CRLF)
                Call("OurScript")

;_WD_DeleteSession($sSession)
    _WD_Shutdown()

Func OurScript();OUR SCRIPT

_WD_Navigate($sSession, "https://news.com/") ; запускаем нужный сайт
_WD_NewTab($sSession, Default, Default, "https://news2.ru/"); еще один в новой вкладке


EndFunc   ;==>DemoScript

Func SetupGecko()
    _WD_Option('Driver', 'geckodriver.exe')
    _WD_Option('DriverParams', '--log trace')
    _WD_Option('Port', 4444)

     $sDesiredCapabilities = '{"capabilities": {"alwaysMatch": {"browserName": "firefox", "acceptInsecureCerts":true}}}'
EndFunc   ;==>SetupGecko
 

Вложения

  • geckodriver.zip
    1.4 МБ · Просмотры: 19
  • wd_capabilities.au3
    24.2 КБ · Просмотры: 17
  • wd_core.au3
    70 КБ · Просмотры: 17
  • wd_helper.au3
    99.1 КБ · Просмотры: 17
Последнее редактирование:

unit51

Новичок
Сообщения
1
Репутация
0
Здравствуйте!
Обращаюсь к сообществу со следующей проблемой.
Использую WebDriver для Chrome. После нажатия на кнопку у меня открывается дополнительная вкладка. Ну и соответственно к этой вкладке у меня уже нет хендла и я не имею доступа к элементам. Нажимаю на кнопу функцией _WD_ClickElement.
Вопрос, как мне получить хэндл (или номер сессии) от нового окна?
Ниже кусок кода autoit...
Код:
; Login
            _WD_SetInputValue($mySession, "/html/body/div[1]/div[2]/div/form/div[1]/input", 'username')
            _WD_SetInputValue($mySession, "/html/body/div[1]/div[2]/div/form/div[2]/input", 'super-puper-password')
            _WD_ClickElement($mySession, "/html/body/div[1]/div[2]/div/form/button")
            ; Открываем базу
            _WD_ClickElement($mySession,"/html/body/div[1]/div[3]/ul/li[2]/div[1]")                                                                      ; Управление аккаунтом
            _WD_ClickElement($mySession,"/html/body/div[1]/div[3]/ul/li[2]/div[2]/div/div/ul/li[1]/a")                                        ; Информационные базы
            ; Будем ждать появление этого элемента, чтобы на него нажать
            _WD_WaitElement($mySession, $_WD_LOCATOR_ByXPath, '/html/body/div[1]/div[6]/div/div[2]/div/div[3]/div[1]/div/table/tbody/tr/td[7]/button/span')
            _WD_ClickElement($mySession,"/html/body/div[1]/div[6]/div/div[2]/div/div[3]/div[1]/div/table/tbody/tr/td[7]/button") ; Запустить
            ; и вот тут открывается новая вкладка и все что-бы я не писал далее, получаю 404 ошибку. Оно и понятно почему.

Вот что показывает консоль
Код:
_WD_ElementAction ==> Success [0] : Parameters:   Command=Click   Option=Default
_WD_WaitElement ==> Success [0] : Parameters:   Strategy=xpath   Selector=/html/body/div[1]/div[6]/div/div[2]/div/div[3]/div[1]/div/table/tbody/tr/td[7]/button/span   Delay=Default   Timeout=Default   Options=Default
__WD_Post ==> Success [0] : HTTP status = 200
_WD_FindElement ==> Success [0] : Parameters:   Strategy=xpath   Selector=/html/body/div[1]/div[6]/div/div[2]/div/div[3]/div[1]/div/table/tbody/tr/td[7]/button   StartNodeID=Default   Multiple=Default   ShadowRoot=Default
__WD_Post ==> Success [0] : HTTP status = 200
_WD_ElementAction ==> Success [0] : Parameters:   Command=Click   Option=Default
_WD_WaitElement ==> Timeout [7] : Parameters:   Strategy=xpath   Selector=/html/body/div[1]/div[25]/div[2]/div/div[3]/div[2]/span   Delay=Default   Timeout=Default   Options=Default
__WD_Post ==> No match [8] : HTTP status = 404

Прошу направить ход моих мыслей в правильном направлении. Куда копать?
Заранее, всех откликнувшихся, благодарю.
 
Верх