2017-03-07 1 views
0

boolean display = driver.findElement(By.cssSelector( "input#txtkeyword [placeholder = 'Job title'] ' );))isDisplayed(); = false ブール値enable = driver.findElement( "input#txtkeyword [プレースホルダー= 'ジョブタイトル']"))isSelected(); = false boolean enable = driver.findElement isEnabled(); = trueorg.openqa.selenium.ElementNotVisibleException:要素が表示されていないか、CSSセレクタの他の組み合わせと同様にIDで試行されます。

+0

最初はIDで試しましたが、driver.findElement(By(ID))。size()> 1を見つけたときにCSSセレクタに変更しました。 – Gazal

+0

あなたはHTMLコードスニペットを共有してください。問題を特定するのに役立ちます。 –

+0

Gazal

答えて

0

要素が表示されない理由はたくさんあります。それはポップアップでカバーすることができますが、DOMはまだロードされている可能性があります。

最初のインスタンスでは、失敗した場合のスクリーンショットを取り、要素がカバーされているかどうかを確認します。私はcucumber-jvmのために以下を使用します。あなたはどのようなフレームワークを使用しているのかを行う方法をGoogleにすることができます。

@After 
public void captureScreenshotOnFailure(Scenario scenario){ 
    try { 
     if (scenario.isFailed() && driver !=null) { 
      System.out.println("***>> Scenario failed: "+scenario.getStatus()); 
      try { 
       driver augemented = new Augmenter().augment(webDriver); 
       byte[] screenshot = ((TakesScreenshot) augemented).getScreenshotAs(OutputType.BYTES); 

       scenario.embed(screenshot, "image/png"); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 

    } finally { 
     if (driver !=null) { 
      driver.quit(); 
     } 
    } 
} 

DOMのロードが完了していない場合は、それを待ちます。

Wait<driver> wait_element = new WebDriverWait(driver, 80); 
WebElement jobTitleElement = wait_element.until(
    ExpectedConditions.visibilityOfElementLocated(By.cssSelector(
    "input#txtkeyword[placeholder='Job title']"))); 

待機が失敗した場合、その要素は存在しません。

待機が成功した場合は、要素までスクロールします。要素がボタンの場合は、moveToElement()の後にクリック()することができます。これは完全なコードを含むだけではありません。

Actions action = new Actions(driver); 
action.moveToElement(jobTitleElement).click().build().perform(); 
関連する問題