2

我正在使用 Selenium webdriver 自动化共享点应用程序。

单击一个链接以将新项目添加到列表中时,它会打开窗口/框架(不确定),一种模态弹出窗口。执行脚本时,出现无法定位元素的错误。在下图中,当我使用 查找所有窗口句柄driver.getwindowhandles()时,它只提供 1 个窗口作为父窗口。而不是子窗口。相同的代码能够通过 selenium IDE 运行,但不能通过 JUnit。请帮助我如何处理这件事。

driver.findElement(By.xpath("//div[@id='zz9_V4QuickLaunchMenu']/div/ul/li[4]/a/span/span")).click();
driver.findElement(By.id("idHomePageNewLink")).click();
Thread.sleep(5000);

//此时给出错误,这是子弹出窗口上文本字段的 id。

driver.findElement(By.id("ctl00_m_g_99918f84_a256_44b4_819e_982688a9f15c_ctl00_ctl05_ctl00_ctl00_ctl00_ctl04_ctl00_ctl00_UrlFieldUrl")).clear();        
driver.findElement(By.id("ctl00_m_g_99918f84_a256_44b4_819e_982688a9f15c_ctl00_ctl05_ctl00_ctl00_ctl00_ctl04_ctl00_ctl00_UrlFieldUrl")).sendKeys("http://efgh");
System.out.println("Done!!!!");
4

2 回答 2

1

我有一个类似的问题,我已经使用SwitchTo().FrameSelenium webdriver 提供的方法解决了。使用以下代码将焦点设置到 SharePoint 模式文件上传对话框:

driver.SwitchTo().Frame(driver.FindElement(By.ClassName("ms-dlgFrame")));
于 2016-11-22T11:41:07.313 回答
0

在 SharePoint for New item 表单中,您无需切换窗口。由于 Selenium 将所有内容视为一页,并且自动检测代码。

说到重点,New Item 表单窗口在内部包含 IFrame,其中包含文本框/其他数据消耗对象。

请通过切换框架尝试。通常在新项目窗口中会有 2 个 IFrame 窗口...请检查新项目窗体窗口的 HTML 代码。

Driver.SwitchTo().Frame(1);
Console.WriteLine(Driver.Title);

一切顺利......希望这会有所帮助:-)

于 2012-11-22T11:21:15.290 回答