Java “线程中的异常”;“主要”;org.openqa.selenium.NoSuchElementException:没有这样的元素:无法定位元素:{“方法”:“id”,“选择器”:“名称”}
来源Java “线程中的异常”;“主要”;org.openqa.selenium.NoSuchElementException:没有这样的元素:无法定位元素:{“方法”:“id”,“选择器”:“名称”},java,selenium,selenium-chromedriver,Java,Selenium,Selenium Chromedriver,来源 <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;"> 此主题中的页面是一个弹出页面 错误: 线程“main”org.openqa.selenium.NoSuchElementException中的异常: 没有此类元素:无法定位元素:
<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;">
此主题中的页面是一个弹出页面
错误:
线程“main”org.openqa.selenium.NoSuchElementException中的异常:
没有此类元素:无法定位元素:
{“方法”:“id”,“选择器”:“名称”}(会话信息:
chrome=61.0.3163.100)(驾驶员信息:chromedriver=2.32.498550
(9DEC58E66C31BC53A9CE3C7226F0C1C5810906A),平台=Windows NT
10.0.10240 x86_64)(警告:服务器未提供任何stacktrace信息)命令持续时间或超时:0毫秒
我尝试使用css、xpath、名称等进行查找,但没有任何用处。它们都表现出相同的错误。我正在Eclipse上使用SeleniumWebDriver和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");
}
package open\u chrome;
导入java.util.Iterator;
导入java.util.Set;
导入java.util.concurrent.TimeUnit;
导入org.openqa.selenium.By;
导入org.openqa.selenium.WebDriver;
导入org.openqa.selenium.WebElement;
导入org.openqa.selenium.chrome.ChromeDriver;
导入org.openqa.selenium.support.ui.Select;
公共级Chrome_驱动程序{
公共静态void main(字符串[]args)引发InterruptedException{
WebDriver驱动程序=新的ChromeDriver();
driver.manage().window().maximize();
get(“https://”);
driver.findElement(By.id(“电子邮件”)).sendKeys(“docker@de.com");
driver.findElement(By.id(“密码”)).sendKeys(“Test1234”);
driver.findElement(通过.css选择器)(“body>div:n个子(1)>div>div>
表单>分区:第n个子项(5)>按钮”)。单击();
//添加新的VAR
driver.findElement(By.id(“ext-gen224”))。单击();
driver.findElement(By.id(“ext-gen367”))。单击();
字符串parentWindow=driver.getWindowHandle();
//Set handles=driver.getWindowHandles();
对于(字符串childWindow:driver.getWindowHandles())
{
driver.switchTo().window(childWindow);
驱动程序.findElement(By.id(“名称”)).sendKeys(“Krishna-05”);
}
可能有很多事实。您的元素是否可见。我的意思是,例如,您可能有滚动条?可能有iframe?
如果这样做没有帮助,请为测试类提供开始和所有步骤、浏览器信息……我会尽力提供帮助。可能有很多事实。您的元素是否可见。我的意思是,例如,您可能有滚动条?可能有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")
或者直接等待
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")
第二件事检查元素是否在帧中,如果它在
帧中
首先在帧中切换,然后使用上面的代码您可以使用任何定位器,我想可能是等待问题,请尝试显式和隐式等待
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")
或者直接等待
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")
第二件事是检查元素是否在帧中,如果它在
帧中
首先在帧中切换,然后使用上面的代码您应该添加以下代码行:
driver.manage().timeout().implicitlyWait(120,TimeUnit.SECONDS);
系统在几秒钟内运行您看不到的代码,请给出此代码。您应该添加以下代码行:
driver.manage().timeout().implicitlyWait(120,TimeUnit.SECONDS);
系统在不到几秒钟的时间内运行该代码,这是您看不到的,请给出该代码。发生这种情况的原因可能有很多…除了尝试不同的定位器之外,您还尝试过解决什么问题?等待?是否有IFRAME?发生这种情况的原因可能有很多…除了尝试不同的定位器之外,您尝试过解决什么问题定位器?等待?是否存在IFRAME?
元素的可见性定位
不检查元素是否位于IFRAME
中。它只调用isDisplayed()
方法。除此之外,这是一个很好的答案。visibilityOfElementLocated
不检查元素是否在iframe
中。它只调用isDisplayed()
元素上的方法。除此之外,这是一个很好的答案。我无法将图像添加为注释,但请检查问题,我已将其添加到那里。希望这将清除一些云。div选项0是否可见?我的意思是在开始时尝试一步一步地查找输入。在输入之前可能还有一个问题存在另一个具有同名?也请检查此项。您也可以尝试在html内容中查找元素。也可以尝试此项。如果这无助于向我提供您的类的url、设置等。这也是正常的页面吗?可能是弹出的,或者它位于其他选项卡、窗口上?另一个弹出窗口。首先,您应该切换到该窗口,可能web驱动程序警报类会有所帮助。之后开始查找您可以在查找元素之前使用暂停2秒以确保其存在。我无法将图像添加为注释,但请检查问题,我已将其添加到那里。希望这将清除一些云。div选项\u 0是否可见?我的意思是在开始时尝试逐步查找输入。在输入之前可能还有一个问题另一个同名元素?也请检查此项。您也可以尝试在html内容中查找元素。也请尝试此项。如果这无助于向我提供您的类的url、设置等。这也是正常的页面吗?可能是弹出的,或者在其他选项卡、窗口上?另一个弹出窗口o首先您应该切换到该窗口可能是web驱动程序警报class将提供帮助。在开始查找之后,您可以在查找元素之前使用暂停2秒,以确保它存在