Java 尽管元素存在,但硒显示无接触元素异常

Java 尽管元素存在,但硒显示无接触元素异常,java,selenium,selenium-webdriver,iframe,webdriverwait,Java,Selenium,Selenium Webdriver,Iframe,Webdriverwait,所以我编写了一小段selenium代码,但它不允许我选择元素!我不明白。我尝试复制和粘贴示例,但由于这个原因,没有任何效果 上面写着:NoSuchElementException:无法定位元素#login \-input 以下是我的java代码: WebDriver driver = new FirefoxDriver(); driver.manage().timeouts().implicitlyWait( 10, TimeUnit.SECONDS ); driver.get( "https:

所以我编写了一小段selenium代码,但它不允许我选择元素!我不明白。我尝试复制和粘贴示例,但由于这个原因,没有任何效果

上面写着:
NoSuchElementException:无法定位元素#login \-input

以下是我的java代码:

WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait( 10, TimeUnit.SECONDS );
driver.get( "https://www.ticketmaster.com/review" );
WebElement inputElement = driver.findElement( By.id( "login-input" ) );

您的登录表单位于
iframe
中。首先切换驱动程序,然后尝试以下代码:

WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait( 10, TimeUnit.SECONDS );
driver.get( "https://www.ticketmaster.com/review" );

driver.switchTo().frame("loginFrame");
WebElement inputElement = driver.findElement( By.id( "login-input" ) );
inputElement.sendKeys("test");
用户名和密码字段位于
iframe
中,因此您必须:

  • 诱导WebDriverWait以使所需帧可用并切换到该帧
  • 诱导WebDriverWait使所需元素可单击
  • 您可以使用以下解决方案:

    WebDriver driver = new FirefoxDriver();
    driver.get( "https://www.ticketmaster.com/review" );
    new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.cssSelector("iframe#loginFrame")));
    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("label[for='login-input']"))).sendKeys("FX_NINJA");
    
可能的副本