当我尝试在"Password"'文本框中输入密码时元素不可见



我正在尝试在电子商务页面上下订单,并且能够成功找到元素以获取密码,但是当我尝试输入密码时,我会遇到错误P>

线程" main" org.openqa.selenium.elementnotvisible exception中的例外:元素不可见

注意:有时它可以正常工作,但有时会丢弃上述错误。

有人可以提供解决方案,以及为什么测试引发此错误。

这是元素的HTML代码

这是以下代码

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

您评论几乎很好的解决方案。您写道:

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

更改以下条件:

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

这应该有效。

最新更新