【问题标题】:Selenium displays NoSuchElementException despite the element being there尽管元素存在,但 Selenium 仍显示 NoSuchElementException
【发布时间】:2019-04-26 12:54:51
【问题描述】:

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

上面写着: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" ) );

【问题讨论】:

标签: java selenium selenium-webdriver iframe webdriverwait


【解决方案1】:

您的登录表单位于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");

【讨论】:

    【解决方案2】:

    用户名密码字段在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");
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-02
      • 2016-08-10
      • 1970-01-01
      • 2019-03-21
      • 1970-01-01
      • 2017-04-22
      • 2014-09-26
      • 2014-01-08
      相关资源
      最近更新 更多