线程" main"中的例外情况org.openqa.selenium.NoSuchElementException:没有这样的元素:无法找到元素:{"方法":" id","选择器":"名称& #34;}

时间:2017-11-16 19:36:03

标签: java selenium selenium-chromedriver

enter image description here来源

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

此主题中的页面是弹出页面。

错误:

  

线程中的异常&#34; main&#34; org.openqa.selenium.NoSuchElementException:   没有这样的元素:无法找到元素:   {&#34;方法&#34;:&#34; id&#34;,&#34;选择器&#34;:&#34;名称&#34;}(会话信息:   chrome = 61.0.3163.100)(驾驶信息:chromedriver = 2.32.498550   (9dec58e66c31bcc53a9ce3c7226f0c1c5810906a),platform = Windows NT   10.0.10240 x86_64)(警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:0毫秒

我尝试用css,xpath,name等查找并没有用。所有这些都表现出同样的错误。我在Eclipse上使用Selenium Webdriver和Java。

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");
    }

3 个答案:

答案 0 :(得分:0)

可能有很多事实。你的元素是否可见我的意思是例如你可能有滚动?可能有iframe?  如果这无济于事,请提供您的测试课程,包括开始和所有步骤,浏览器信息......我会尽力帮助。

答案 1 :(得分:0)

你可以使用任何定位器,似乎等待我的问题,尝试显式和隐式等待

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第一次切换到帧中然后使用上面的代码

答案 2 :(得分:0)

您应该添加以下代码行:

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

系统会在不到一秒钟的时间内运行该代码,给出代码。