使用Selenium自动化图表,通过鼠标悬停/悬停跨图表提取内容

时间:2014-04-24 13:07:41

标签: javascript html selenium selenium-webdriver mouseover

<div class="chart-hover-tip" style="display: none; left: ***442.289***px; top: 81.3333px; opacity: 1;">
<table class="ng-scope" cellspacing="0">
    <thead class="chart-tip-head">
        <tr class="time-info">
            <td colspan="2">
                <i class="icon-globe"></i>
                <span class="label ng-binding">
                       **Wed, Mar 12**
                </span>
                <span class="label ng-binding ng-hide" ng-show="timezoneLabel" style="display: block; padding-left: 22px;">
                </span>
            </td>
        </tr>
    </thead>
    <tbody class="chart-tip-body”<!ngRepeat: legend in legends>
<td class="value">
       <b once-text="legend.point[1]|rankfmt" style="text-align: right;">
          **10**

       

网页中有一个图表,当图表悬停在图表上时,会动态显示一些内容(类时间信息中的日期和图表提示体中的值)(因为像素图中的像素变化 - hover-tip “风格左:”)。使用Selenium,我想模拟在一系列坐标上移动以检索不同的内容 - 日期及其相应的值。我怎么能用Selenium做到这一点,我不知道怎么开始,因为这涉及到改变CSS中的像素?任何指针将不胜感激。

2 个答案:

答案 0 :(得分:0)

我设法通过使用ActionChains的鼠标在一系列坐标上获取元素的大小和位置以及模拟图表上的移动。 ActionChains使用的相关方法是:move_to_element和move_to_element_with_offset

答案 1 :(得分:0)

无需使用坐标即可从门户网站检索内容。

你可以做的是:

使用WebElement返回类型创建方法,并使用方法findElement()。例如:

WebDriver test;
test = new FirefoxDriver();

public static WebElement checkAndGet(By b) throws Exception {
return test.findElement(b);
}

存储WebElement并使用Method getText()。例如:

WebElement date = checkAndGet(By.xpath("//span[@class='label ng-binding']");
date.getText();

然后你可以打印它或做你想做的任何事情。例如:

System.out.println(date.getText());

希望这有帮助!