2016-09-07 1 views
0

Ich bin neu in Selenium und WebDriver. Ich habe dieses HTML:Webdriver - Element kann nicht gefunden werden (Java)

<input id="undefined-undefined-Jobsubject-5546" type="text" value="" data-test="testing-job-subject" style="padding: 0px; position: relative; width: 100%; border: medium none; outline: medium none; background-color: transparent; color: rgb(255, 255, 255); cursor: initial; font: inherit; height: 100%; box-sizing: border-box; margin-top: 14px;"/>

und ich habe diesen Code:

driver.findElement(By.xpath("//input[@data-test='testing-job-subject']")); 

aber der Fehler ist:

org.openqa.selenium.NoSuchElementException: Unable to locate element: //input[@data-test='testing-job-subject']

Ich habe auch versucht diese:

driver.findElement(By.xpath("//*[starts-with(@id,'undefined-undefined-Jobsubject')]")); 

weil die Zahl in ID generiert wird, so kann ich nicht die By.id (....), aber den gleichen Fehler. Und ja, ich habe im Code die Timeouts, also ist das Element auf der Seite.

Wo ist das Problem? Dank

Antwort

2

Wenn Sie NoSuchElementException als Ausnahmeregelung bekommen, kann es folgende Gründe: -

  • werden, wenn Sie Element finden werden, es wäre nicht auf der DOM, So sollten Sie implementieren WebDriverWait zu warten, bis Element sichtbar wie folgt: -

    WebDriverWait wait = new WebDriverWait(driver, 10); 
    WebElement el = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input[data-test='testing-job-subject']"))); 
    
  • Möglicherweise ist dieses Element in einem beliebigen frame oder iframe. Wenn ja, müssen Sie wechseln, dass frame oder iframe bevor das Element, wie unten zu finden: -

    WebDriverWait wait = new WebDriverWait(driver, 10); 
    
    //Find frame or iframe and switch 
    wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("your frame id or name")); 
    
    //Now find the element 
    WebElement el = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input[data-test='testing-job-subject']"))); 
    
    //Once all your stuff done with this frame need to switch back to default 
    driver.switchTo().defaultContent(); 
    
+0

Ich habe den ersten Grund versucht, aber immer noch nichts, nur ein weiterer Fehler: "org.openqa.selenium.TimeoutException: Erwartete Bedingung fehlgeschlagen: Warten auf Sichtbarkeit des Elements von By.cssSelector: Eingabe [data-test = 'testen -job-subject '] (ausprobiert für 10 Sekunde (s) mit 500 MILLISECONDS interval) " Und es gibt keinen Rahmen oder iframe:/ – Mephy

+0

So wie sicher sein, dass es keinen Rahmen oder Iframe ?? –

+0

@Mephy Sind Sie sicher, dass Sie hier den richtigen HTML-Code für das Link-Element angegeben haben? und stellen Sie sicher, dass dieses Element auf der Seite manuell sichtbar ist. –

0

Try this:

WebDriverWait wait = new WebDriverWait(driver, 10); 
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("input[data-test='testing-job-subject']"))); 
0

ich unten denken sollte

driver.findElement (By.cssSelector für Sie arbeiten (“ id * = 'Jobsubject' "));

Verwandte Themen