我正在尝试使用给定的 url 登录沙盒 Paypal 应用程序,但是,当尝试使用以下代码在页面中查找电子邮件 ID 和密码字段时,它会抛出元素不可见异常错误。
重现问题的代码
driver.get("https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-7NA824468C3295748#/checkout/login");
Thread.sleep(20000);
driver.findElement(By.cssSelector("input[id='email']")).sendKeys("shariftest@gmail.com");
driver.findElement(By.cssSelector("input[id='password']")).sendKeys("test@1234");
driver.findElement(By.id("btnLogin")).click();
Thread.sleep(6000);
奇怪的是,这些元素定位器绝对正确并且在页面中可见,但在尝试使用 selenium 查找元素时仍然会抛出错误。
请尝试上面的代码重现问题。
最佳答案
我查看了源 html,两个输入字段都有 display: none
作为样式。这就是为什么您不能向他们发送 key 。
<input id="email" name="login_email" type="email" value="" autocomplete="off" placeholder="Email" style="display:none">
您可以使用 JavaScript 设置值,例如电子邮件字段:
driver.executeScript("arguments[0].value = 'you@yourprovider.nl'", driver.findElement(By.id("email")));
关于java - 当元素在页面中实际可见时,selenium 抛出元素不可见异常错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47638155/