2017-10-25 17 views
1

送信キーを実行すると、そのコマンドのすべての都市の名前が表示され、クリアされます。私はちょうど確認するために待機が追加されました。それを回避する方法はありますか?フィールドを見つけてそれをクリアするので、失敗しません。私はフィールドを離れていないので、javascriptすることはできませんし、 'キーストローク'によって呼び出されるコードが見つかりませんでした。セレンStaleElementReferenceException SendKeysが呼び出されたときに発生します

try 
{ 
    var wait = new WebDriverWait(Driver.Instance, TimeSpan.FromSeconds(10)); 
    wait.Until(ExpectedConditions.ElementExists((By.Id("city")))); 
    var city = Driver.Instance.FindElement(By.Id("city")); 
    //Task.Delay(10000).Wait(); 
    city.SendKeys(City); 
    //Task.Delay(10000).Wait(); 
} 
catch (StaleElementReferenceException ex) 
{ 
    var city = Driver.Instance.FindElement(By.Id("city")); 
    City.SendKeys(City); 
} 

上記の都市はプロパティです。

+0

あなたがトンをリンクすることができ彼はサイト? – JeffC

+0

残念ながらできません。それは内部的なもので、PWの保護があります –

+0

明示的な待機が追加されたときにはどうなりましたか?問題は消えましたか? – krokodilko

答えて

0

通常、DOMに存在する要素だけでなく、が表示され、アクティブで編集可能なであるのを待ちます。

wait.Until(ExpectedConditions.elementToBeClickable((By.Id("city")))); 

詳細については、ExpectedConditions#elementToBeClickableを参照してください。


フィールドが消去されたときにonchangeまたはoninputイベントが発生し、一部のjavascriptコードがこの要素を変更するようです。

まず、このコードを試してみてください - それにすべてのアクションを実行する前に、エレメントのそれぞれの時間を待つ:それはまだ動作しない場合

wait.Until(ExpectedConditions.elementToBeClickable((By.Id("city")))).clear(); 
wait.Until(ExpectedConditions.elementToBeClickable((By.Id("city")))).SendKeys(City); 

が、その後、ブルートフォース方式を使用 - いくつかを試してみてくださいループ内回:

Utils.silentSleepがある
wait.Until(ExpectedConditions.elementToBeClickable((By.Id("city")))).clear(); 

for(int i = 5; i >=0; i--){ 
    try{ 
    wait.Until(ExpectedConditions.elementToBeClickable((By.Id("city")))).SendKeys(City); 
    break; 
    }catch(StaleElementReferenceException ex){ 
    if(i <= 0){ 
     throw ex; 
    }else{ 
     // swallow the exception, wait some time and try again 
     Utils.silentSleep(500); 
    } 
} 

static void silentSleep(long ms){ 
    try{ 
    Thread.sleep(ms); 
    }catch(Exception ex){ 
    } 
} 
+0

申し訳ありませんが、reply.familyの緊急事態には長い時間がかかっており、今はこれを試しています...データを受け入れているので、これはうまくいきませんでしたが、送信キーを実行すると同時に、上記の最後の例では、値が貼り付けられ、削除され、貼り付けられ、削除され、5回...最も奇妙なものです。ありがとう。 –

関連する問題