2017-10-07 1 views
-1

j'essaie d'envoyer des clés champ de saisie, mais ne peut pas le faire ... Je ai essayé différentes façons d'attendre jusqu'à ce que l'élément est visible, mais a des exceptions ... délai d'attenteSélénium ChromeDriver - élément visible ne se

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(); 

cette méthode me donne toujours TimeOut:

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

Il est difficile de répondre sans examiner ce site et regardant le code HTML. Quelques conseils: vérifiez si 'id = UserName' est unique dans la page, en théorie il doit être unique, mais le développeur peut ne pas le savoir et a ajouté deux éléments avec le même identifiant' UserName'. – krokodilko

+0

La conclusion évidente semble être que l'élément n'est pas visible. Vérifiez vos localisateurs et assurez-vous qu'ils sont uniques et localiser l'élément que vous avez prévu. – JeffC

+0

S'il vous plaît partager HTML ou URL \ – iamsankalp89

Répondre

1

Si son caché juste envoyer/exécuter un simple js par le sélénium qui montreront l'élément. Mais ça ne peut pas être un peu plus tricki. Réglez la taille de la fenêtre à une taille plus grande, par exemple 2000x2000. Si quelque chose n'est pas placé dans la fenêtre, le sélénium ne le voit pas.

0

s'il vous plaît essayer d'utiliser JavaScript pour accéder à l'élément, puis effectuer d'autres opérations sur l'élément

((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element);