Selenium Java - inspect元素和页面源显示不同的信息

时间:2014-08-13 20:54:24

标签: java selenium selenium-webdriver jsoup

我正在尝试使用selenium web驱动程序浏览页面,我一度陷入困境 请参考我已经显示我正在处理的那个页面的inspect元素输出的图像。

inspect element output

但在页面源代码(我在浏览器中看到并使用Jsoup)看起来像这样,

<html>
<head>
</head>
<frameset rows="75,60,*" resize="no" SCROLLING="NO" name=main border="0">   
<frame src="/frame/topnewprof.shtml" name="top" SCROLLING=NO>
<frame src="/frame/blank.html" name="menu" SCROLLING=NO >
<frame src="/itrade/user/welcome.exe?action=chk_seckey_stat" name="body" SCROLLING=AUTO>
</frameset>
<body>&nbsp;
</BODY></html>

为什么这种不匹配?我在上面的图片中突出显示的黄色东西有我需要的元素! 我将如何使用硒? 我知道我们可以使用selenium switchTo().frame()导航到iframe,但即使我进入上面显示的三个帧中的任何一个,我也无法找到我需要的信息, 这可以实现吗?它甚至可能吗?

更新 大家好!我找到了解决这个问题的方法,现在已经克服了这个问题。 实际上发生的事情是,当我试图做getPageSource时,selenium实际上得到了其中一个帧的帧源(&#34; body&#34; - 如上所述),我不小心弄明白了。 接下来解决我的问题我想从我所在的地方退一步所以我可以选择这个iframe =(name =&#34; top&#34;)这是我有图像所示内容的目标。为了实现这个目的,我使用了Selenium的defaultContent()函数,然后使用switchTO()返回了一步.frame()进入了我想要的框架并完成了任务

希望这有帮助!! 并感谢所有试图帮助我的人。

3 个答案:

答案 0 :(得分:0)

我无法准确地告诉你为什么会造成这种不匹配,但我知道如何解决这个问题。

我在网页上遇到类似javascript短语的问题。通常,必须单击这些元素才能进入。但是,如果此元素无法点击或点击不能解决问题,您还可以使用唯一的Xpath搜索所需信息。

我不确定您是否已使用Selenium IDE,但也许您可以记录导航到此元素并使用Selenium IDE中抛出的Java代码来获取所需信息。

...我在使用Selenium遥控器而不是Selenium WebDriver时才看到这个问题......

答案 1 :(得分:0)

我认为问题也可以通过使用xpath来解决。获取正确xpath的最简单方法是使用firefox与firefox。右键单击开发人员工具中的元素,然后单击“复制xpath”。 Firebug在生成xpath时非常准确。它解决了许多问题,比如我的问题。

*即使您没有使用firefox,大多数情况下您也可以在chrome webdriver测试中使用来自firebug的相同xpath。

它是一个救生员。

但是警告,有时路径很长:

final static String planTitlePath = "/html/body/div[1]/div[2]/div[1]/div[2]/div[5]/div/div/div/div/section/div/div[2]/div/ol/li/div[1]/plan-card/h4/span";

答案 2 :(得分:0)

我找到了这个解决方案,现在已经越过了。实际上发生的事情是,当我试图做getPageSource时,selenium实际上得到了其中一个帧(“body” - 如上所述)的帧源,我不小心想出来了。接下来解决我的问题,我想从我所在的地方退后一步,所以我可以选择这个iframe =(name =“top”),这是我有图像所示内容的目标。为了实现这个目的,我使用了Selenium的defaultContent()函数,然后使用switchTO()返回了一步.frame()进入了我想要的框架并完成了任务

希望这有帮助!!并感谢所有试图帮助我的人。