Webdriver无法定位元素(Java)[英] Webdriver - Unable to locate element (Java)

问题描述

我是 Selenium 和 WebDriver 的新手.我有这个 HTML:

<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;"/>

我有这个代码:

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

但错误是:

<块引用>

org.openqa.selenium.NoSuchElementException:无法定位元素://input[@data-test='testing-job-subject']

我也试过这个:

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

因为id中的数字是生成的,所以不能取By.id(....),但是同样的错误.是的,我在代码中有超时,所以元素在页面上.

问题出在哪里?谢谢

推荐答案

如果你得到 NoSuchElementException 作为你提供的异常,可能有以下原因:-

  • 可能当你要查找元素时,它不会出现在 DOM 上,所以你应该实现 WebDriverWait 等待元素可见,如下所示:-

    WebDriverWait wait = new WebDriverWait(driver, 10);
    WebElement el = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input[data-test='testing-job-subject']")));
    
  • 这个元素可能在任何 frame 或 iframe 中.如果是,您需要在找到以下元素之前切换该 frame 或 iframe :-

    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();
    

本文地址:https://www.itbaoku.cn/post/978517.html