在URL "https://cheapticket.in/b2c/flights"
上,点击“注册”按钮后会出现一个弹出框,我想在其中输入电子邮件和所有其他字段,但会抛出以下异常:
Exception in thread "main" org.openqa.selenium.ElementNotInteractableException:
Element <input id="" class="fluid" name="login" type="text"> could not be
scrolled into view
package TestPackage;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.GeckoDriverService;
public class CheapTickets {
public static void main(String[] args){
System.setProperty("driver.chrome.driver", "D:\\Selenium\\chromedriver.exe");
WebDriver driver=new ChromeDriver();
driver.get("https://cheapticket.in/b2c/flights");
System.out.println("Loaded cheaptickets");
//go to sign up
driver.findElement(By.xpath("//a[@id='signup']")).click();
System.out.println("Travelled to signup");
driver.findElement(By.xpath("//input[@class='fluid']")).sendKeys("[email protected]");
}
}
我该如何解决这个问题?
@SuperShazam看起来这个定位器在DOM中找到13个元素,这可能是Selenium抛出异常的原因。尝试为每个元素使用更具体的定位器。如果您无法创建更具体的定位器,请尝试迭代元素并检查所需的元素是否可见。
我同意@baadnews,你在代码中使用的xpath获取Email的输入字段将匹配DOM中的13个元素。因此,您的代码将获得DOM中的第一个匹配,这在页面上是不可见的,并且您将获得异常。
您可以像这样使用更具体的xpath
email = driver.findElement(By.xpath("//div[@class='content']//input[@name='email']"))
mobile = driver.findElement(By.xpath("//div[@class='content']//input[@name='mobile']"))
name = driver.findElement(By.xpath("//div[@class='content']//input[@name='name']"))