2017-10-07 15 views
-1

をやったことがなかった私は、要素が見えるまで待つためにさまざまな方法を試してみましたが、タイムアウトの例外を持っている ...入力フィールドにキーを送信しようとするが、それを行うことができない...セレンChromeDriver - 要素が見える

IWebElement userName = driver.FindElement(By.Id("UserName")); 
IWebElement userPassword = driver.FindElement(By.Id("Password")); 
IWebElement subButton = driver.FindElement(By.XPath(("//button[contains(.,'Вхід')]"))); 
while (true) 
{ 
    userName = driver.FindElement(By.Id("UserName")); 
    if (userName.Displayed) 
    { 
     userName.SendKeys("test"); 
     break; 
    } 
} 
subButton.Click(); 
この方法を使用

が私を与える常にタイムアウト:

public static void WaitForElementLoad(By by, int timeoutInSeconds) 
{ 
    if (timeoutInSeconds > 0) 
    { 
     WebDriverWait wait = new WebDriverWait(webDriver, TimeSpan.FromSeconds(timeoutInSeconds)); 
     wait.Until(ExpectedConditions.ElementIsVisible(by)); 
    } 
} 
+1

このサイトを調べて、HTMLコードを見ずに答えることは困難である上の要素にスクロールするためにJavaScriptを使用して、他の操作を実行してみてください。いくつかのヒント: 'id = UserName'がページ内で一意であることを確認します。理論的には一意でなければなりませんが、開発者はこれを知らず、同じIDの2つの要素を追加します。 – krokodilko

+0

明白な結論は、要素が見えないことが原因と思われます。ロケータを確認し、それらが一意であることを確認し、意図した要素を見つけます。 – JeffC

+0

HTMLまたはURLを共有してください\ – iamsankalp89

答えて

1

をその隠されただけで、実行/要素が表示されますセレンによって、単純なJSを送信する場合。しかしそれはちょっと難しいことではありません。ウィンドウサイズを2000x2000などの大きなサイズに設定します。ビューポートに何かが配置されていない場合、セレンはそれを見ません。

0

要素

((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element); 
関連する問題