我的代码有问题...当我尝试进行登录时。特别是密码。
我的代码:
public static void VentaGC() throws InterruptedException{
System.setProperty("webdriver.chrome.driver", "C:\\Users\\BlackSinger\\Documents\\Librerias Java\\Crhomedriver\\chromedriver.exe");
WebDriver driver= new ChromeDriver();
driver.get("https://foro-ptc.com/");
WebElement login;
login= driver.findElement(By.linkText("login"));
login.click();
Thread.sleep(5000);
WebElement loginbox;
loginbox= driver.findElement(By.id("navbar_username"));
loginbox.click();
loginbox.sendKeys("proof");
WebElement passbox;
passbox= driver.findElement(By.name("vb_login_password_hint"));
passbox.click();
passbox.sendKeys("pass");
}
}
错误是这样的:
线程“ main” org.openqa.selenium.ElementNotVisibleException中的异常:元素不可见
在我的代码的这一行:
passbox.sendKeys("pass");
网站是这样的:登录部分中的https://foro-ptc.com/。
如果有人有想法,请帮助我!谢谢
答案 0 :(得分:1)
问题是密码有2个输入。实际的密码输入是id="navbar_password"
,只有单击<div class="navbar_password_outer">
才能看到。当您单击输入时,您使用的name="vb_login_password_hint"
变得不可见,并出现ElementNotVisibleException
错误。
<div class="navbar_password_outer">
<input type="password" class="textbox" tabindex="102" name="vb_login_password" id="navbar_password" size="10" style="display: none;">
<input type="text" class="textbox default-value" tabindex="102" name="vb_login_password_hint" id="navbar_password_hint" size="10" value="Contraseña" style="display: inline;">
</div>
代码:
public static void VentaGC(){
System.setProperty("webdriver.chrome.driver", "C:\\Users\\BlackSinger\\Documents\\Librerias Java\\Crhomedriver\\chromedriver.exe");
WebDriver driver= new ChromeDriver();
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
driver.get("https://foro-ptc.com/");
driver.findElement(By.linkText("login")).click();
driver.findElement(By.id("navbar_username")).sendKeys("proof");
driver.findElement(By.className("navbar_password_outer")).click();
driver.findElement(By.id("navbar_password")).sendKeys("pass", Keys.ENTER);
}
如果您是第一次打开页面,可以在下面添加代码:
try{
driver.manage().timeouts().pageLoadTimeout(5, TimeUnit.SECONDS);
driver.get("https://foro-ptc.com/");
} catch (TimeoutException ignored) {}
driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);