Selenium отображает NoSuchElementException, несмотря на наличие элемента - PullRequest
0 голосов
/ 24 ноября 2018

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

Там написано: 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" ) );

Ответы [ 2 ]

0 голосов
/ 24 ноября 2018

Поля username и password находятся в пределах iframe, поэтому вам необходимо:

  • Induce 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");
    
0 голосов
/ 24 ноября 2018

Ваша форма для входа внутри 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");
...