2015-02-23 98 views
0

我正在使用selenium(java API)使用d3.js可视化对页面进行自动化测试。我需要在图表中找到一些数据点(svg)。 我的Chrome控制台的屏幕截图可能是解释我的问题的最明确的方式: 我的元素具有不属于HTML的数据属性(__data__.key)。使用Selenium获取不在HTML中的(d3)元素属性

Chrome console screenshot

在JavaScript中,我可以简单地通过<element>.__data__.key获得的财产。 但在硒中,我无法检索它(例如通过使用getProperty)。

有什么建议吗?

回答

0

我会用python解决它,但在JavaScript中也有类似的方法。可

两种方案:

  • page_source()属性

  • innerHtml属性

两种方法都与装载后来通过AJAX DOM的互动,只要你访问它在正确的时间。一旦你获得了页面的DOM源,你就可以实现你所需要的检查。

page_source

driver.get(url) 
time.sleep(3) 
source = driver.page_source 
print source 

的innerHTML

driver.get(url) 
time.sleep(3) 
elem = self.driver.find_element_by_xpath("//*") 
source = elem.get_attribute("innerHTML") 
print source 
+0

我正在寻找的东西是在DOM,但不是在HTML。 pageSource和innerHTML,都只给我HTML。 – SirLenz0rlot 2015-02-23 15:29:56

+0

例如如果我试图获得我在屏幕截图中选择的元素的innerHTML,它将不会返回任何内容(因为该元素内没有html)。 – SirLenz0rlot 2015-02-23 15:33:23

+1

该解决方案已经在http://bl.ocks.org/erikvullings/raw/51cc5332439939f1f292/上进行过测试(硒的结果(两种方案相同)为http://pastebin.com/mkFEPnNY)在结果页面中,您全部图表对象里面的数据 – aberna 2015-02-23 15:42:43

相关问题