Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SeleniumJava-inspect元素和页面源代码显示不同的格式_Java_Selenium_Selenium Webdriver_Jsoup - Fatal编程技术网

SeleniumJava-inspect元素和页面源代码显示不同的格式

SeleniumJava-inspect元素和页面源代码显示不同的格式,java,selenium,selenium-webdriver,jsoup,Java,Selenium,Selenium Webdriver,Jsoup,我试图使用SeleniumWeb驱动程序浏览页面,但有一点我被卡住了 请参考我正在处理的页面上显示inspect元素输出的图像 但是在页面源代码中(我在浏览器上看到,也使用了Jsoup)是这样的 <html> <head> </head> <frameset rows="75,60,*" resize="no" SCROLLING="NO" name=main border="0"> <frame src="/frame/topnew

我试图使用SeleniumWeb驱动程序浏览页面,但有一点我被卡住了 请参考我正在处理的页面上显示inspect元素输出的图像

但是在页面源代码中(我在浏览器上看到,也使用了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实际上得到了其中一个帧的帧源(“body”-如上所述),我意外地发现了这一点。 接下来要解决我的问题,我想从原来的位置后退一步,这样我就可以选择这个iframe=(name=“top”),这是我获取内容的目标,如图所示。为了实现这一点,我使用了Selenium的defaultContent()函数,然后使用switchTO()返回一步。frame()进入了我想要的框架并完成了任务

希望这有帮助!!
感谢所有在这方面帮助过我的人。

我无法确切地告诉您造成这种不匹配的原因,但我知道如何解决这个问题

我对页面上的javascript短语也有类似的问题。通常,必须单击这些元素才能进入。但是,如果这个元素不可单击,或者单击不能解决问题,那么您也可以使用唯一的Xpath来搜索所需的信息

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


。。。我只在使用Selenium remote control而不是Selenium WebDriver时看到过这个问题…

我认为使用XPath也可以解决这个问题。获取正确xpath的最简单方法是在firefox中使用firebug。右键单击开发人员工具中的元素,然后单击复制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";

我找到了解决这个问题的办法,现在这堆东西已经过时了。事实上,当我试图做getPageSource时,selenium实际上得到了其中一个帧的帧源(“body”-如上所述),我意外地发现了这一点。接下来要解决我的问题,我想从原来的位置后退一步,这样我就可以选择这个iframe=(name=“top”),这是我获取内容的目标,如图所示。为了实现这一点,我使用了Selenium的defaultContent()函数,然后使用switchTO()返回一步。frame()进入了我想要的框架并完成了任务


希望这有帮助!!感谢所有在这方面帮助我的人。

嗨,帕斯卡,我已经用解决方案更新了我的问题。请参阅。谢谢你的关心:)干杯