0

JavaでSeleniumWebdriverを使用してテストケースを自動化しようとしています。これには、基本認証ダイアログが含まれます。IE、Chrome、FFを互換性のあるものにするために、同じアプローチを使用する必要があります。AutoITを使用する必要があります。IEとFFで完了しましたが、Chromeでは機能しません。AutoIT Window Infoクラスとコントロール名を見つけるためのツールを使用しています。しかし、Chromeはかなり異なります。その場合、誰かが助けることができますか?

IEとFFを動作させるためのコードは次のとおりです

 $classForBasicAuthenticationWindow = "[CLASS:#32770]"
 $username = "XXXXXX"
 $password = "XXXXXX"

 WinWait($classForBasicAuthenticationWindow,"",120)
 If WinExists($classForBasicAuthenticationWindow) Then
    WinActivate($classForBasicAuthenticationWindow)
    Send($username)
    Send("{TAB}")
    Send($password & "{Enter}")   
  EndIf

FFの場合も同様です。上記はIEの場合です。

Chromeの場合、これまでにこれを作成しました。window infoツールを検討すると、Chromeの場合はポップアップが別のウィンドウではないことがわかります。そのため、少し複雑になります。とにかくここに私が試したものがあります:

$classForBasicAuthenticationWindow = "[CLASS:Chrome_WidgetWin_1]"
$username = "XXXXX"
$password = "XXXXX"

WinWait($classForBasicAuthenticationWindow,"",120)
If WinExists($classForBasicAuthenticationWindow) Then
WinActivate($classForBasicAuthenticationWindow)
While 1
   $isAuthenticationRequiredVisible = ControlGetHandle($classForBasicAuthenticationWindow, "", "[CLASS:ViewsTextfieldEdit; INSTANCE:2]")
  If $isAuthenticationRequiredVisible <> "" Then 
     MsgBox($isAuthenticationRequiredVisible)
     ExitLoop
  EndIf
WEnd
ControlSend($classForBasicAuthenticationWindow, "", "[CLASS:ViewsTextfieldEdit; INSTANCE:2]", $username)
EndIf
4

3 に答える 3

2

なぜあなたはあなたのURLをそのように開かないのですか(URLでログインクレデンシャルを渡すことによって)

@driver.get "#{username}:#{password}@#{URL}"

@driver.get "user:pass@my.domain.com"
于 2012-11-16T22:01:54.413 に答える
1

ControlSendメソッドは、ウィンドウのクラスではなく、ウィンドウのタイトルを取得します。 したがって、Autoit WindowInfoToolに表示されるウィンドウタイトルを付けてみてください。

以下に示すコードは私のために働いた。

$titleForBasicAuthenticationWindow = "Window Title As Given in Window Info Tool"
$username = "XXXXX"
$password = "XXXXX"

WinWait($classForBasicAuthenticationWindow,"",120)
If WinExists($classForBasicAuthenticationWindow) Then
 WinActivate($classForBasicAuthenticationWindow)
 ControlSend($classForBasicAuthenticationWindow, "", "[CLASS:ViewsTextfieldEdit; INSTANCE:2]", $username)
EndIf
于 2012-11-19T08:23:46.437 に答える
0

Chromeの場合、私はすべてを試しましたが、基本http認証ポップアップにクレデンシャルを入力する最良の方法はAutoITを使用することです。sleep(25000) スクリプトの先頭に追加する必要があり ます。Chromeが25秒以内にそのポップアップを開くことができることを確認してください。そうでない場合は、スリープ時間を増やします。

于 2019-01-10T07:01:03.530 に答える