2016-12-19 10 views
0

私は宣言してる私のセレンwebdriverを参照宣言された後、「CommandTimeoutのを」変更する方法:セレン - webdriverをこのような

var driver = new FirefoxDriver(service, 
    new FirefoxOptions { 
     BrowserExecutableLocation = "XXXX", 
     Profile = firefoxProfile, 
     UseLegacyImplementation = true }, 
    new TimeSpan(0, 1, 30)); 

それは時間の99偉大%を動作しますが、しかし、私が欲しい、特定の場合がありますデフォルトの "commandTimeout"を90秒以外の値に変更します。ドライバを再定義しないとどうすればいいですか?

私は次のクラスのすべてのメソッド/プロパティを探求してきたし、それはそれらのいずれかが何らかの影響がある変更していないようだ。

driver.Manage().Timeouts() 

ありもthis postを、それが「COMMANDTIMEOUTに関連していません" thisがあります。ドライバが作成された後は実際にはカバーされません。 Seleniumタイムアウトに関するほとんどの記事は、暗黙の待機またはドライバの宣言で指定されたタイムアウト値ではなく、さまざまなタイムアウトに関係しています。

答えて

0

なぜcommandTimeoutを後で設定する必要がありますか?これは実際にはドライバがもはや応答しないときのバックアップだけです。それは運転中のブラウザ自体とは何の関係もありません。

selenium source codeを見ると、RemoteWebdriver.ICommandExecutorフィールドにcommandTimeoutパラメータが渡されていることがわかります。これはprivateです。つまり、初期化後、コマンドのタイムアウトにアクセスしたり変更したりすることはできません。

これは非常にハッキーですが、確かに「解決策」は推奨されません。これは、プロパティにアクセスするためにリフレクションを使用することです。しかし、これは確かにあなたが使用しているドライバに大きく依存するので、いつでも壊れる可能性があるので、お勧めしません。

時々高いタイムアウトが必要な場合は、commandTimeoutを高い値に設定し、ImplicitWait & coを使用してタイムアウトを管理する方がよい場合がよくあります。

関連する問題