簡體   English   中英

線程“ main”中的異常org.openqa.selenium.NoSuchElementException:無此類元素:無法找到元素:{“ method”:“ id”,“ selector”:“ name”}

[英]Exception in thread “main” org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {“method”:“id”,“selector”:“name”}

在此處輸入圖像描述來源

<input id="name" name="name" type="text" style="box-sizing:border-box;-moz-box-sizing:border-box;position:absolute;left:130px;top:50px;width:220px;">

這是我的代碼

WebElement VARName = driver.findElement(By.id("name"));
    VARName.sendKeys("Krishna-05");

該主題中的頁面是一個彈出頁面。

錯誤:

線程“主” org.openqa.selenium.NoSuchElementException中的異常:無此類元素:無法找到元素:{“ method”:“ id”,“ selector”:“ name”}(會話信息:chrome = 61.0.3163.100) (驅動程序信息:chromedriver = 2.32.498550(9dec58e66c31bcc53a9ce3c7226f0c1c5810906a),平台= Windows NT 10.0.10240 x86_64)(警告:服務器未提供任何堆棧跟蹤信息)命令持續時間或超時:0毫秒

我試圖用css,xpath,name等來查找,但沒有用。 它們都顯示相同的錯誤。 我在Eclipse上使用帶有Java的Selenium Webdriver。

package open_chrome;

import java.util.Iterator;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.Select;

public class Chrome_Driver {

public static void main(String[] args) throws InterruptedException{

    WebDriver driver = new ChromeDriver();
    driver.manage().window().maximize();
    driver.get("https://<website.com>/");

    driver.findElement(By.id("email")).sendKeys("docker@de.com");
    driver.findElement(By.id("password")).sendKeys("Test1234");
    driver.findElement(By.cssSelector("body > div:nth-child(1) > div > div > 
    form > div:nth-child(5) > button")).click();
    //Adding New VAR

    driver.findElement(By.id("ext-gen224")).click();
    driver.findElement(By.id("ext-gen367")).click();
    String parentWindow = driver.getWindowHandle();
//      Set<String> handles =  driver.getWindowHandles();
    for(String childWindow:driver.getWindowHandles())
    {
        driver.switchTo().window(childWindow);
        driver.findElement(By.id("name")).sendKeys("Krishna-05");
    }

可能有很多事實。 您的元素可見嗎? 我的意思是例如您可能在滾動嗎? 可能有iframe嗎? 如果這樣做沒有幫助,請提供測試的類以及開始和所有步驟,瀏覽器信息...,我將盡力提供幫助。

您可以使用任何定位器,我猜似乎是等待的問題,請嘗試顯式和隱式等待

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
WebElement VARName = driver.findElement(By.id("name"));
VARName.sendKeys("Krishna-05");

或明確等待

WebDriverWait wait = new WebDriverWait(driver,20);
WebElement VARName= wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("name")));
VARName.sendKeys("Krishna-05")

第二件事檢查元素是否在框架中,如果它在frame請先在框架中切換,然后使用上面的代碼

您應該添加以下代碼行:

driver.manage().timeouts().implicitlyWait(120,TimeUnit.SECONDS);

系統會在不到幾分之一秒的時間內運行該代碼,給出該代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM