java - 尝试时没有这样的元素异常
问题描述
为什么当代码正确时我没有收到此类元素异常错误,当我单击 gmail 时,链接会在新选项卡中打开,但不会将电子邮件作为密钥发送?
@Test
public static void gDem() throws InterruptedException{
System.setProperty("webdriver.chrome.driver", "D:\\Edu Stuff\\Selenium\\Selenium Softs\\Other Softs\\Drivers\\chromedriver_win32\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();
driver.manage().deleteAllCookies();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
driver.get("http://www.google.ca");
driver.findElement(By.linkText("Gmail")).click();
driver.findElement(By.linkText("Sign in")).click();
Thread.sleep(3000);
driver.findElement(By.xpath("//input[@id='identifierId']")).sendKeys("abhi.abhib5");
Thread.sleep(2000);
driver.close();
}
解决方案
如果它打开一个新选项卡,您需要在执行该选项卡窗口的操作之前切换到该选项卡窗口。试试下面
// this is to keep your parent window
String parentWindow = driver.getWindowHandle();
driver.findElement(By.linkText("Sign in")).click();
Thread.sleep(3000);
// since new tab is opened get new winodw handles and switch
ArrayList<String> tabs = new ArrayList<String> (driver.getWindowHandles());
driver.switchTo().window(tabs.get(1));
driver.findElement(By.xpath("//input[@id='identifierId']")).sendKeys("abhi.abhib5");
Thread.sleep(2000);
// if you have further actions in parent window you need to switch back to the parent window
driver.close();
推荐阅读
- javascript - VueJs 从 100 个对象的响应中一次只显示/渲染一个对象
- vba - IF(AND) 的 FormulaR1C1 问题
- javascript - D3.js - 文本未显示在节点中
- python-2.7 - ImportError:没有名为 google.api_core 的模块
- php - 如何将数组中的值从控制器传递给查看
- regex - 重复 POSIX 量词在 Amazon Redshift 中不起作用
- xml - 如何使用 xsl 表达式在 ditamap 中获取 pubtitle
- javascript - IE 11 自动完成 - 不工作
- robotframework - Xpath 错误:无法对“文档”执行“评估”:
- mysql - 如何在一个 MysQl 查询中找到 MIN、MAX、FIRST、LAST?