2016-06-23 3 views
-1

Ich versuche, eine Bestellung in einer E-Commerce-Seite zu platzieren und ich kann Elemente für das Passwort erfolgreich finden, aber wenn ich versuche, ein Passwort einzugeben, ich erhalte Fehler alsElement nicht sichtbar, wenn ich versuche, ein Passwort einzugeben in "Passwort" Textfeld

Exception in thread "main" org.openqa.selenium.ElementNotVisibleException: Elemente nicht sichtbar

Hinweis: manchmal ist es funktioniert, aber manchmal ist es die obigen Fehler werfen .

Kann jemand eine Lösung zur Verfügung stellen und warum der Test diesen Fehler wirft. Hier

ist der HTML-Code für das Element

Hier ist der folgende Code

   System.setProperty("webdriver.chrome.driver", "C:\\Users\\AAA\\Desktop\\Softwares\\chromedriver.exe"); 
      WebDriver driver=new ChromeDriver(); 
      driver.get("http://www.flipkart.com"); 
      //driver.manage().window().maximize(); 
      driver.findElement(By.className("LM6RPg")).sendKeys("Shirts"); 
      driver.findElement(By.className("vh79eN")).click(); 
      driver.findElement(By.xpath(".//*[@id='products']/div/div[1]/div[1]/div/div[2]/div[1]/a")).click(); 
      driver.findElement(By.xpath(".//*[@id='fk-mainbody-id']/div/div[7]/div/div[3]/div/div/div[5]/div[3]/div[2]/a/div/div")).click(); 
      //driver.findElement(By.xpath(".//*[@id='fk-mainbody-id']/div/div[7]/div/div[3]/div/div/div[5]/div[3]/div[2]/div/div/span")).click(); 
      driver.findElement(By.xpath(".//*[@id='fk-mainbody-id']/div/div[7]/div/div[3]/div/div/div[6]/div/div[2]/div[1]/div/div[2]/div/div[1]/form/input[8]")).submit(); 
      driver.findElement(By.xpath(".//*[@id='fk-mainhead-id']/div[1]/div/div[2]/div[3]/div[1]/a/span[1]")).click(); 
      // driver.findElement(By.partialLinkText("VIEW CART")).click(); 
      driver.findElement(By.xpath(".//*[@id='view-cart-form']/button")).click(); 

      driver.findElement(By.id("email")).sendKeys("984"); 
      driver.findElement(By.xpath(".//*[@id='ng-app']/div/div[2]/ul/li[1]/div/div[2]/div[1]/div[2]/div[1]/form/input")).click(); 
      //WebDriverWait wait = new WebDriverWait(driver,30); 
      //wait.until(ExpectedConditions.presenceOfElementLocated(By.id("password"))); 

      driver.findElement(By.id("password")).sendKeys("bbb181"); 
      driver.findElement(By.xpath(".//*[@id='ng-app']/div/div[2]/ul/li[1]/div/div[2]/div[1]/div[2]/div[1]/form/input")).click(); 
+1

Schwer zu sagen, ohne die Website zu sehen. Ist das Kennwortelement immer auf der Seite auf der Seite sichtbar oder wird es nach Ausführung der früheren Aktionen angezeigt? – RemcoW

+0

möchten Sie möglicherweise die Login-Daten anonymisieren, die Sie dort erhalten haben –

+0

Das Passwort, das wir in das Passwort-Textfeld eingeben, ist verschlüsselt wie in anderen Passwort-Textfeld gefunden. Der Fehler weist darauf hin, dass die Zeichen nicht sichtbar sind. – Nivi

Antwort

1

Sie Kommentar fast gute Lösung. Sie schrieb:

WebDriverWait wait = new WebDriverWait(driver,30); 
wait.until(ExpectedConditions.presenceOfElementLocated(By.id("password"))); 

Ändern Sie die Bedingung für:

wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("password"))); 

und dies sollte funktionieren.

+0

die Wartezeit muss auch vor driver.findElement (By.id ("email") verschoben werden) –

+0

Danke Kotoj. Deine Lösung hat für mich funktioniert :) – Nivi

Verwandte Themen