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");
}
答案 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);
系统会在不到一秒钟的时间内运行该代码,给出代码。