2

我正在尝试为 SAP-webUI(基于 Web)应用程序编写一些 UI 测试用例。登录后,它显示仪表板(工作中心的)屏幕。

现在的问题是,我可以打开页面,输入 U/N、Pwd 并通过 Selenium 登录。在我按下“登录”按钮后,URL 发生变化,页面被重定向/刷新。

例如登录前的 URL:https://a/b/c/d/e/f/g.htm?sap-client=001&sap-sessioncmd=open

例如登录成功后的网址:https://a/b(bDsdfsdsf1lg==)/c/d/e/f/g.htm

在此之后,我无法执行任何操作或按下页面任何部分的任何链接。我尝试了所有可能的属性(css、xpath、id)。Webdriver 在页面上找不到任何元素。它仅显示错误“未找到元素”。

我正在将 java 与 Selenium Web 驱动程序一起使用。

请在下面找到网页的html结构

<html><body><div><div><iframe>#document<html><head></head><frameset><frameset><frame>#document<html><head></head><body><form><div><div><table><tbody><tr><td><div><ul><li><a id=abcdef></a></li></ul></div></td></tr></tbody></table></div></div></form></body></html></frame></frameset></frameset></html></iframe></div></div></body></html>

实际上我想单击一个链接菜单“abcd”,它位于 iframe 和框架内,如下面的 HTML 代码所示

<html><head></head><body><iframe name=a1><html><head></head><frameset><frameset name=fs1><frame name=f1><html><head></head><body><table><tbody><tr><td><ul><li><a id=abcdef>

我也尝试了下面的代码。

driver.switchTo().frame("a1"); driver.findElement(By.id("abcd")).click();

或者

driver.findElement(By.xpath("//*[@id='abcd']")).click();

使用上述代码后,我仍然收到错误“没有这样的元素”

请建议

问候,湿婆

4

3 回答 3

3

这样做...

driver.switchTo().frame(driver.findElement(By.xpath("//iframe[@name='a1']"))); // 切换到 iframe

其次是

driver.switchTo().frame("f1"); // 切换到帧

然后你想要的行动......

driver.findElement(By.id("abcd")).click();

于 2015-03-26T10:19:41.337 回答
2

这是因为iframe. 您需要先切换到它

driver.switchTo().frame(0);
driver.findElement(By.id("abcdef")).click();

哪里0是帧索引。

于 2015-03-25T13:20:34.740 回答
1

在此处查看有关隐式等待的文档

我想您应该隐式等待,直到您选择的元素可用

修改这些代码以适合您选择的元素:

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("someid")));
于 2018-03-27T04:36:45.637 回答