当我尝试在“密码”文本框中输入密码时,元素不可见

时间:2016-06-23 13:17:53

标签: java selenium-webdriver

我正在尝试在电子商务页面下订单,我能够成功找到密码元素,但是当我尝试输入密码时,我收到错误

  

线程“main”中的异常org.openqa.selenium.ElementNotVisibleException:元素不可见

注意:有时它正在运行,但有时会抛出上述错误。

有人可以提供解决方案以及为什么测试会抛出此错误。

以下是元素

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

1 个答案:

答案 0 :(得分:1)

你评论几乎是好的解决方案。你写道:

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

更改条件:

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

这应该有用。