Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Как ввести логин и пароль в popup окно в selenium2library


(kom) #1

при входе на сайт, появляется окно с запросом ввода логина и пароля.
в seleniumlibrary был кейворд press key native и можно было просто ввести нужные данные и нажать enter.
Как это можно сделать в selenium2library, не зная локатора?


(Mykhailo Poliarush) #2

На будущее, прикладывай код, который пробуешь и как выглядит код страницы.

А по твоему случаю есть Submit Form кейворд, подходит?


(kom) #3

Не подходит:
Message: u’Modal dialog present’
Кода пока что и нет, ведь не знаю как это обойти:

open browser	http://remoteserverip/gui/#	ie

submit form	

(Mykhailo Poliarush) #4

Так у тебя открывается модальное окно, тогда тебе нужно работать с popup насколько я понимаю, а для этого есть кейворд Select Window

Ну так открываешь в popup код страницы и смотришь. Прикрепи скриншот, чтобы точно определить, что у тебя выскакивает


(kom) #5

Вот такое окно открывается при входе

http://clip2net.com/clip/m0/1382512011-clip-76kb.jpg


(Mykhailo Poliarush) #6

Ну так это совсем не то о чем я говорю, это NTLM

Вот похожие темы:


(kom) #7

Спасибо буду пробовать с autoit/pywinauto, т.к. варианты с реестром и логином в адресе не подходят


(Mykhailo Poliarush) #8

а ты пробовал вариант с

http://myusername:myuserpassword@mydomain.com/mypath

?


(kom) #9

Да, вариант с логином и паролем в адресе не подходит.
Я так понял что в IE 8 такое не проходит, а мне надо именно в IE.


(kom) #10

Как можно ввести нужные буквы, если pywinauto не удается установить, при установке с помощью setup.py install, выдаются ошибки:
Traceback (most recent call last):
File “setup.py”, line 50, in
import pywinauto
File “c:\pywinauto\pywinauto_init_.py”, line 28, in
import findwindows
File “c:\pywinauto\pywinauto\findwindows.py”, line 32, in
import win32structures
File “c:\pywinauto\pywinauto\win32structures.py”, line 458, in
assert sizeof(MENUITEMINFOW) == 44, sizeof(MENUITEMINFOW)
AssertionError: 48

версия питона : python 2.7.5 64 bit
Есть какие-то другие методы?


(Mykhailo Poliarush) #11

ошибку можно репортить разработчикам

а на счет других методов:

  • править реестр
  • использовать python win32api напрямую
  • использовать browsermob-proxy в качестве прокси сервера, где будет устанавливаться логин и пароль для запросов
  • ну и другие варианты, которые были указаны в постах на которые я давал ссылки

(5am) #12

сталкивался с такой проблемой.
решили так - не средствами автоматизации, а настройкой инфраструктуры

настроили по такому принципу - если сайт дергался изнутри сети (домена) то требования к авторизации не было. если снаружи - было.

поговорите с web dev/admin’ом - возможно и у вас сделают такое исключение :slight_smile:


(kom) #13

Решили это путем создания vbs скрипта, который вводит пароль.


(Mykhailo Poliarush) #14

Ну раз решили, то плиз помоги другим таким же и выложи сюда решение. Чтобы другие, которые потом будут смотреть тоже видели, как можно обойти такую же проблему.


(kom) #15

open browser http://address/gui/

sleep 2 seconds

run “d:\users\me\tests\sendkeys.vbs”

В sendkeys.vbs:
Set WshShell = WScript.CreateObject(“WScript.Shell”)

WshShell.SendKeys “password”
WshShell.SendKeys “{ENTER}”

Перед этим ввел логин и пароль, чтоб был запрос только пароля.


(Mykhailo Poliarush) #16

отлично, спасибо.


(kom) #17

Удалось сделать еще лучше, с помощью python-модуля win32com :
open browser http://remoteserver ie
sleep 2 seconds
${shell} set variable win32com.client.Dispatch(‘WScript.Shell’)
evaluate ${shell}.SendKeys("${mypass}", 0) win32com, win32com.client
evaluate ${shell}.SendKeys("{Enter}", 0) win32com, win32com.client

Но возникает еще вопрос: почему после выполнения такого логина, робот выполняет нужные тесты, но если я хочу в этом же окне что-то сделать вручную - то все ссылки, элементы заблокированы, не могу ни на что кликнуть, приходится открывать новое окно и логиниться вручную.


после выполнения тестов, все элементы заблокированы