Selenium отображает NoSuchElementException, несмотря на наличие элемента

Итак, я сделал небольшой код селена, но он не позволяет мне выбирать элементы! Я не понимаю. Я пытаюсь копировать и вставлять примеры, и из-за этого ничего не работает.

Там написано: NoSuchElementException: Unable to locate element #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" ) );

person FX_NINJA    schedule 24.11.2018    source источник
comment
Возможный дубликат Найти элементы внутри форм и iframe с помощью Java и Selenium WebDriver   -  person JeffC    schedule 24.11.2018


Ответы (2)


Ваша форма входа находится внутри файла 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");
person frianH    schedule 24.11.2018

Поля имя пользователя и пароль находятся внутри 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");
    
person DebanjanB    schedule 24.11.2018