Java 尽管元素存在,但硒显示无接触元素异常
所以我编写了一小段selenium代码,但它不允许我选择元素!我不明白。我尝试复制和粘贴示例,但由于这个原因,没有任何效果 上面写着: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:
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");