Selenium Webdriver - 无法在页面刷新/重定向后找到元素

时间:2015-03-25 13:15:32

标签: java selenium selenium-webdriver sap webui

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

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

E.g。登录前的网址:https://a/b/c/d/e/f/g.htm?sap-client=001&sap-sessioncmd=open

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

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

我正在使用带有Selenium Web Driver的java。

请找到以下网页的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和frame里面,如下面的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();

OR

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

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

请建议

此致 希瓦

3 个答案:

答案 0 :(得分:3)

这样做......

  。

driver.switchTo()帧(driver.findElement(By.xpath( “// IFRAME [@名称= 'A1']”))); //切换到iframe

接着是

  

driver.switchTo()帧( “F1”)。 //切换到框架

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

  

driver.findElement(By.id( “ABCD”))点击();

答案 1 :(得分:1)

由于iframe ,这是。您需要先切换到

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

其中0是帧索引。

答案 2 :(得分:0)

请参阅有关隐式等待here

的文档

我猜你应该做一个隐含的等待,直到你选择的元素可用

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

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("someid")));