Что нового

Не работает выбор пользователя в ComboBox

Gallemar

Новичок
Сообщения
14
Репутация
0
Добрый день
Начал изучать AutoIt для создания робота тестирования.
Столкнулся с такой проблемой - нужно запустить программу и пройти авторизацию - выбрать пользователя из списка ComboBox,ввести пароль и нажать кнопку ОК на этой форме. Сразу вылезла проблема - не работает выбор пользователя. Сделал несколько вариантов:

Код:
Run("S_Market.exe")
WinWaitActive("S_Market.exe")
ControlCommand('S-Market','Директор','TRxDBLookupCombo1','SelectString','Administrator (пароль по умолчанию 3)')

и
Код:
Run("S_Market.exe")
WinWaitActive("S_Market.exe")
ControlCommand('S-Market','','TRxDBLookupCombo1','SelectString','Administrator (пароль по умолчанию 3)')


Свойства формы такие:
>>>> Window <<<<
Title: S-Market
Class: TfmLogin
Position: 0, 0
Size: 278, 247
Style: 0x16C80000
ExStyle: 0x00010100
Handle: 0x00350896

>>>> Control <<<<
Class: TR:rofl:BLookupCombo
Instance: 1
ClassnameNN: TR:rofl:BLookupCombo1
Name:
Advanced (Class): [CLASS:TR:rofl:BLookupCombo; INSTANCE:1]
ID: 1443978
Text: Директор
Position: 15, 94
Size: 241, 23
ControlClick Coords: 65, 12
Style: 0x54010000
ExStyle: 0x00000200
Handle: 0x0016088A

>>>> Mouse <<<<
Position: 83, 131
Cursor ID: 0
Color: 0xFFFFFF

>>>> StatusBar <<<<

>>>> ToolsBar <<<<

>>>> Visible Text <<<<
Касса
Директор
Кафе
Отмена
OK


>>>> Hidden Text <<<<
Administrator (пароль по умолчанию 3)

Используйте правильные теги для кода.
madmasles
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Код:
$hWnd = WinWaitActive("[Title:S-Market; Class:TfmLogin]")
ControlCommand( $hWnd, '', '[CLASS:TRxDBLookupCombo; INSTANCE:1]', 'SelectString', 'Administrator (пароль по умолчанию 3)')
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Gallemar
А так?
Код:
#include <GuiComboBox.au3>

Global $iPID, $hWnd, $hCombo, $iRes

$iPID = Run(@ScriptDir & '\S_Market.exe')
If Not $iPID Then Exit 1
$hWnd = WinWaitActive('[Title:S-Market; Class:TfmLogin]', '', 5)
If Not $hWnd Then Exit 2
$hCombo = ControlGetHandle($hWnd, '', '[CLASS:TRxDBLookupCombo; INSTANCE:1]')
If Not $hCombo Then Exit 3
$iRes = _GUICtrlComboBox_SelectString($hCombo, 'Administrator')
If $iRes = -1 Then Exit 4
MsgBox(64, 'Info', 'OK')
 
Автор
Gallemar

Gallemar

Новичок
Сообщения
14
Репутация
0
Оба варианта не работают:(
 
Автор
Gallemar

Gallemar

Новичок
Сообщения
14
Репутация
0
>"C:\Program Files (x86)\AutoIt3\SciTE\..\aut2exe\aut2exe.exe" /in "C:\S-Market\1.au3"
>Exit code: 0 Time: 0.5268
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Gallemar,
А Вы не могли бы сделать скриншот этого окна?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Gallemar,
А нужный TR:rofl:BLookupCombo не номер 2, судя по скриншоту?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Gallemar,
Я правильно Вас понял: тот, где Кафе [CLASS:TR:rofl:BLookupCombo; INSTANCE:2], а тот, где Директор [CLASS:TR:rofl:BLookupCombo; INSTANCE:1]?
Что напишет в консоли это?
Код:
#include <GuiComboBox.au3>

Global $iPID, $hWnd, $hCombo, $sList

$iPID = Run(@ScriptDir & '\S_Market.exe')
If Not $iPID Then Exit 1
$hWnd = WinWaitActive('[Title:S-Market; Class:TfmLogin]', '', 5)
If Not $hWnd Then Exit 2
For $i = 1 To 2
	$hCombo = ControlGetHandle($hWnd, '', '[CLASS:TRxDBLookupCombo; INSTANCE:' & $i & ']')
	If Not $hCombo Then Exit 3
	$sList = _GUICtrlComboBox_GetList($hCombo)
	If $sList Then
		ConsoleWrite('Combo ' & $i & ' list: ' & $sList & @LF)
	Else
		ConsoleWrite('Error get list' & @LF)
	EndIf
Next
 
Автор
Gallemar

Gallemar

Новичок
Сообщения
14
Репутация
0
>"C:\Program Files (x86)\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "C:\S-Market\2.au3"
Error get list
Error get list
>Exit code: 0 Time: 2.932
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Gallemar,
А этот?
Код:
#include <GuiComboBox.au3>

Global $iPID, $hWnd, $hCombo, $sClass, $sTxt

$iPID = Run(@ScriptDir & '\S_Market.exe')
If Not $iPID Then Exit 1
$hWnd = WinWaitActive('[Title:S-Market; Class:TfmLogin]', '', 5)
If Not $hWnd Then Exit 2
For $i = 1 To 2
	$hCombo = ControlGetHandle($hWnd, '', '[CLASS:TRxDBLookupCombo; INSTANCE:' & $i & ']')
	If Not $hCombo Then Exit 3
	$sClass = _WinAPI_GetClassName($hCombo)
	ConsoleWrite('Combo ' & $i & ' CLASS: ' & $sClass & @LF)
	$sTxt = _WinAPI_GetWindowText($hCombo)
	ConsoleWrite('Combo ' & $i & ' Text: ' & $sTxt & @LF)
Next
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Похоже, что это компонент для базы данных и список формируется динамически.
Gallemar, появится ли список, если сделать так
Код:
ControlCommand('S-Market','','TRxDBLookupCombo1','ShowDropDown')
И попробуйте 'SelectString' для выпадающего списка.
 
Автор
Gallemar

Gallemar

Новичок
Сообщения
14
Репутация
0
>"C:\Program Files (x86)\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "C:\S-Market\44.au3"
>Exit code: 2 Time: 6.051



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

не появляется
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Gallemar [?]
А так?
Код:
ControlFocus("S-Market", "", "TRxDBLookupCombo1")
$pos = ControlGetPos("S-Market", "", "TRxDBLookupCombo1")
ControlClick("S-Market", "", "TRxDBLookupCombo1", "left", 1, $pos[2] - 3, 3)
 
Автор
Gallemar

Gallemar

Новичок
Сообщения
14
Репутация
0
InnI сказал(а):
Gallemar [?]
А так?
Код:
ControlFocus("S-Market", "", "TRxDBLookupCombo1")
$pos = ControlGetPos("S-Market", "", "TRxDBLookupCombo1")
ControlClick("S-Market", "", "TRxDBLookupCombo1", "left", 1, $pos[2] - 3, 3)

https://yadi.sk/d/G3jGi6u5VytYe


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

madmasles сказал(а):
Gallemar [?]
А файл S_Market.exe находится в одной папке со скриптом, окно появляется?
окно появляется,но на форме никаких действий
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Gallemar
У вас окно-то открыто на момент запуска скрипта?
 
Автор
Gallemar

Gallemar

Новичок
Сообщения
14
Репутация
0
InnI сказал(а):
Gallemar
У вас окно-то открыто на момент запуска скрипта?

нет. Извините


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

madmasles сказал(а):
Gallemar,
А этот?
Код:
#include <GuiComboBox.au3>

Global $iPID, $hWnd, $hCombo, $sClass, $sTxt

$iPID = Run(@ScriptDir & '\S_Market.exe')
If Not $iPID Then Exit 1
$hWnd = WinWaitActive('[Title:S-Market; Class:TfmLogin]', '', 5)
If Not $hWnd Then Exit 2
For $i = 1 To 2
	$hCombo = ControlGetHandle($hWnd, '', '[CLASS:TRxDBLookupCombo; INSTANCE:' & $i & ']')
	If Not $hCombo Then Exit 3
	$sClass = _WinAPI_GetClassName($hCombo)
	ConsoleWrite('Combo ' & $i & ' CLASS: ' & $sClass & @LF)
	$sTxt = _WinAPI_GetWindowText($hCombo)
	ConsoleWrite('Combo ' & $i & ' Text: ' & $sTxt & @LF)
Next

>"C:\Program Files (x86)\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "C:\S-Market\sm.au3"
Combo 1 CLASS: TR:rofl:BLookupCombo
Combo 1 Text: Директор
Combo 2 CLASS: TR:rofl:BLookupCombo
Combo 2 Text: Кафе
>Exit code: 0 Time: 1.219


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

InnI сказал(а):
Gallemar [?]
А так?
Код:
ControlFocus("S-Market", "", "TRxDBLookupCombo1")
$pos = ControlGetPos("S-Market", "", "TRxDBLookupCombo1")
ControlClick("S-Market", "", "TRxDBLookupCombo1", "left", 1, $pos[2] - 3, 3)
Вот что получается:
https://yadi.sk/d/AxiIPkIeVz2v7
 
Верх