2017-06-15 63 views
2

如何在瀏覽器警報/對話窗口中輸入密碼。它在加載url時顯示。這不是一個基本的身份驗證提示,而是一個密碼提示,它會阻止與該頁面的任何交互,直到輸入密碼。我正在和水豚一起使用硒紅寶石。我曾嘗試以下:在對話框/提示中輸入密碼

page.driver.browser.switch_to.alert.send_keys("Password") 

,但它不進入任何

Prompt screenshot

+0

那麼你試過了什麼? –

+0

嘗試像這樣,如果它是一個警報'Alert alert = driver.switchTo()。alert(); alert.sendKeys( 「文本」); alert.accept();' –

+0

我已經更新了我迄今爲止所嘗試的問題,它與您建議的類似但未起作用 – Rahul

回答

2

如果你想填什麼是JS window.prompt觸發,則你可以處理它像

page.accept_prompt(with: "The text to fill in") do 
    page.click_button "Go" # whatever action triggers the prompt to appear 
end 

系統模式相反,如果它是一個系統身份驗證模式(不是由JS打開的),那麼你不能從Capybara訪問它,如果你不能在URL中傳遞憑據,你將不得不使用一個完整的系統自動化工具,試圖訪問。

+0

怎麼樣使用一些JavaScript/jquery'page.execute_script(SIMULATE KEYPRESS)'? – fabersky

+0

謝謝托馬斯。我沒有意識到可以通過「with:」選項傳遞文本。它工作,但我沒有看到填寫的文本。我以前嘗試過send_keys,這似乎也沒有填寫提示中的文本,這讓我尋找另一種選擇。這兩個工作,但文字沒有填寫。無論如何,你建議的工作。 – Rahul

+1

@fabersky如果你指的是它不是由JS打開的系統模式,通常你打不開任何東西。 –

2

這可能會幫助你: -

字符串密碼= URLEncoder.encode( 「通行證」) ;

String UserName = URLEncoder.encode(「UserName」);

String url = String.format(「http://%s:%[email protected]」, UserName,Password);

在此%s是以參數的形式傳遞給url的變量。

你可以參考這個網址也https://serverfault.com/questions/371907/can-you-pass-user-pass-for-http-basic-authentication-in-url-parameters

+0

這個答案不是很有幫助,並沒有回答這個問題。 –