首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在自动化过程中单击高图元素

如何在自动化过程中单击高图元素
EN

Stack Overflow用户
提问于 2018-07-10 14:50:43
回答 2查看 1.5K关注 0票数 3

有没有任何方法可以获得SmartGWT高图图中元素的定位器(sclocator或xpath等)?我需要对图形的系列图例(出现在图形右侧的系列)进行自动单击操作。

下面是我试图为这个图的元素识别valida定位器的东西:

  • 使用相对Xpath Helper插件。单击高图表图中的任何元素后,我得到消息:“找不到唯一标识符”。
  • 使用Selenium设置为'user-extensions.js‘和’User-Extension-ide.js‘selenium库,用于smartgwt。在试图识别这些系列的定位器或图形中的任何其他元素之后,我得到消息:"LOCATOR_DETECTION_FAILED“。
  • 使用Selenium Page对象生成器插件。在生成java文件之后,java文件中没有生成与图像相关的信息。

任何帮助都将不胜感激。

提前感谢!

代码语言:javascript
复制
<g class="highcharts-legend" zIndex="7" transform="translate(-32,110)">
  <g zIndex="1" clip-path="url(#highcharts-2)">
    <g transform="translate(0,1)">
      <g class="highcharts-legend-item" zIndex="1" transform="translate(8,3)">
        <path fill="none" d="M 0 11 L 16 11" stroke-dasharray="none" stroke="#C00000" stroke-width="2"></path>
        <path fill="#C00000" d="M 8 9 C 10.664 9 10.664 13 8 13 C 5.336 13 5.336 9 8 9 Z"></path>
        <text x="21" y="15" style="font-family:&quot;Lucida Grande&quot;, &quot;Lucida Sans Unicode&quot;, Verdana, Arial, Helvetica, sans-serif;font-size:12px;cursor:pointer;color:#274b6d;fill:#274b6d;" text-anchor="start" zIndex="2">
          <tspan x="21">Worst Inventory On Site</tspan>
        </text>
      </g>
      <g class="highcharts-legend-item" zIndex="1" transform="translate(8,21)">
        <path fill="none" d="M 0 11 L 16 11" stroke-dasharray="none" stroke="#3A5723" stroke-width="2"></path>
        <path fill="#3A5723" d="M 8 9 C 10.664 9 10.664 13 8 13 C 5.336 13 5.336 9 8 9 Z"></path>
        <text x="21" y="15" style="font-family:&quot;Lucida Grande&quot;, &quot;Lucida Sans Unicode&quot;, Verdana, Arial, Helvetica, sans-serif;font-size:12px;cursor:pointer;color:#274b6d;fill:#274b6d;" text-anchor="start" zIndex="2">
          <tspan x="21">Total Ins</tspan>
        </text>
      </g>
      <g class="highcharts-legend-item" zIndex="1" transform="translate(8,39)">
        <path fill="none" d="M 0 11 L 16 11" stroke-dasharray="none" stroke="#CCC" stroke-width="2"></path>
        <path fill="#CCC" d="M 8 9 C 10.664 9 10.664 13 8 13 C 5.336 13 5.336 9 8 9 Z"></path>
        <text x="21" y="15" style="font-family:&quot;Lucida Grande&quot;, &quot;Lucida Sans Unicode&quot;, Verdana, Arial, Helvetica, sans-serif;font-size:12px;cursor:pointer;color:#CCC;fill:#CCC;" text-anchor="start" zIndex="2">
        <tspan x="21">Total Outs</tspan>
       </text>
      </g>
      <g class="highcharts-legend-item" zIndex="1" transform="translate(8,57)">
        <path fill="none" d="M 0 11 L 16 11" stroke-dasharray="2,2" stroke="#CCC" stroke-width="2"></path>
        <path fill="#CCC" d="M 8 9 C 10.664 9 10.664 13 8 13 C 5.336 13 5.336 9 8 9 Z"></path>
        <text x="21" y="15" style="font-family:&quot;Lucida Grande&quot;, &quot;Lucida Sans Unicode&quot;, Verdana, Arial, Helvetica, sans-serif;font-size:12px;cursor:pointer;color:#CCC;fill:#CCC;" text-anchor="start" zIndex="2">
          <tspan x="21">Inventory On Site</tspan>
       </text>
      </g>
      <g class="highcharts-legend-item" zIndex="1" transform="translate(8,75)">
        <path fill="none" d="M 0 11 L 16 11" stroke-dasharray="6,2" stroke="#CCC" stroke-width="2"></path>
        <path fill="#CCC" d="M 8 9 C 10.664 9 10.664 13 8 13 C 5.336 13 5.336 9 8 9 Z"></path>
        <text x="21" y="15" style="font-family:&quot;Lucida Grande&quot;, &quot;Lucida Sans Unicode&quot;, Verdana, Arial, Helvetica, sans-serif;font-size:12px;cursor:pointer;color:#CCC;fill:#CCC;" text-anchor="start" zIndex="2">
        <tspan x="21">Inventory On Transit</tspan>
       </text>
      </g>
    </g>
  </g>
</g>

EN

回答 2

Stack Overflow用户

发布于 2018-07-25 15:23:11

谢谢您的帮助。但是,我找到了一个使用不同xpath结构的解决方案:

sharedData.appInstance.findElement(By.xpath("//[name()='g' and @class='highcharts-legend']//[name()='text']//*[name()='tspan' and text()='Worst Inventory on Site']")).click();

票数 2
EN

Stack Overflow用户

发布于 2018-07-12 04:16:26

您可以使用下面的代码单击HighChart元素:

代码语言:javascript
复制
/**
     * @param graphName Use one of below values.
     * Worst Inventory On Site
     * Total Ins
     * Total Outs
     * Inventory On Site
     * Inventory On Transit
     */
    public void clickOnGraph(String graphName) {
         WebElement graphElement = driver.findElement(By.xpath("//g[@class='highcharts-legend-item']//tspan[text()='" + graphName + "']"));
         graphElement.click();
    }

对于进一步的HighChart元素操作。你可以参考:

https://github.com/Ardesco/Powder-Monkey/blob/master/src/main/java/com/lazerycode/selenium/graphs/HighCharts.java

这对于HighCharts相关的Selenium操作非常有用。

如果普通单击不起作用,则可以尝试使用JavaScriptExecutor或Actions类单击。

请务必让我知道这是否对你有帮助:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51268312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档