2016-04-22 23 views
1

Pythonで、私は、セレンを使った自動GUIテストのためにWebサイトに接続するときに、資格情報プロバイダを使って資格情報を提供しようとしています。私はおそらくJAVAのために、これを実行する方法について説明し、次のpageが見つかりました:私はあるpythonizeしようとしていますPythonでseleniumの資格情報プロバイダを使用するには?

@Override 
protected WebClient newWebClient() { 
    WebClient client = super.newWebClient(); 
    DefaultCredentialsProvider provider = new DefaultCredentialsProvider(); 
    provider.addCredentials("username","password"); 
    client.setCredentialsProvider(provider); 
    return client; 
    } 

を、私は問題に実行し、私はDefaultCredentialsProvider frの適切なクラス名を見つけられません。

from selenium import webdriver as original_webdriver 

class webdriver(original_webdriver): 
    def newWebClient(self): 
     client = super().newWebClient() 
     provider = DefaultCredentialsProvider() 
     provider.addCredentials("username","password") 
     client.setCredentialsProvider(provider) 
     return client 

エラーこのスクリプトを実行している:

File "C:/Users/adi0341/PycharmProjects/SeleniumTest/tester.py", line 12, in <module> 
    class webdriver(original_webdriver): 
TypeError: module.__init__() takes at most 2 arguments (3 given) 

それを修正する方法は?または、そのリンクで説明されているような何かをする方法?おそらく、セレンの自動GUIテストのためにWebページを開くために、認証を提供するために全く異なるアプローチがありますか?

P.S:認証は、テスト自体の必須部分です。別のユーザーとしてログインし、アクセス権を確認してください...

+0

クラスを作成1つの引数(+ self)ではなく、2つの引数(+ self)を持つ 'webdriver'インスタンスです。より多くのコードを提供 – Andersson

答えて

0

どの行が12であることを指摘できますか? 私はコンストラクタのpython継承のように、thisの例のようにスーパーとあなたの行について不明です。

0

DefaultCredentialsProviderには、webdriverではなく、Java HtmlUnitが付属しています。 How do I handle authentication with the HtmlUnitDriver using Selenium WebDriver?

あなたはDefaultCredentialsProviderのための同様のPythonのカウンターパートがあるかどうかを確認することができます。だから、webdriverを下

チェックこの参照(のJava webdriverをもPythonのwebdriverをもなどwebdriverを中かどうか)それを見つけることができません。それ以外の場合、答えは:PythonであなたのためのDefaultCredentialsProviderはありません。

おそらくあなたは、このような、他の認証ソリューションを探す必要があります。この要件については Authentication with selenium (Python)

1

ステップ1

keyring

import keyring 
keyring.set_password("https://my.sharepoint.come", "username", "password") 

を使用して、このクレデンシャルはcreの下に保存されます自動ログインのためのdentialsマネージャー、あなたはそれを得るために、コマンドプロンプトでこのcontrol /name Microsoft.CredentialManagerコマンドを実行することができます。新しく追加された資格情報が

enter image description here

「ジェネリック資格情報」の下に表示されます

enter image description here

さらにコードを書く前でも、これを手動でテストすることができます。

ステップ2

あなたがこれを通過したら、あなたは network.automatic-ntlm-auth.trusted-uris下のURLを保持するために のFirefoxの優先順位を設定する必要があります。

明らか
from selenium import webdriver 
url = 'http://my.sharepoint.com' 
fp = webdriver.FirefoxProfile() 
fp.set_preference('network.automatic-ntlm-auth.trusted-uris',url) 
driver = webdriver.Firefox(firefox_profile=fp) 
driver.get(url) 
+0

動作していないようです。私は正しい資格情報でログインしていません。シェアポイントWebページは認証エラーを返します。 – Alex

+0

サイトに手動でログインできますか? – Abbas

+0

はい私は午前です。ポップアップウィンドウで... – Alex

関連する問題