首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当xpath出现在页面代码中时,没有找到selenium返回错误元素

当xpath出现在页面代码中时,没有找到selenium返回错误元素
EN

Stack Overflow用户
提问于 2014-01-23 11:31:36
回答 1查看 590关注 0票数 0

我试图使用selenium模块自动化perl中的web应用程序,我正在使用selenium-server-独立-2.39.0在firefox版本27.0上。

当我运行我的脚本时,在这一行中会出现错误。

代码语言:javascript
复制
$sel->click_ok("//g[contains(\@class,'highcharts-series-group')]//rect");

用于此的HTML是:

代码语言:javascript
复制
<g class="highcharts-series-group" zIndex="3">
<g class="highcharts-series highcharts-tracker highcharts-tracker" visibility="visible" zIndex="0.1" transform="translate(27,20) scale(1 1)" style="cursor:pointer;" clip-path="url(#highcharts-347)">
<rect fill="rgb(86,161,220)" x="478" y="34" width="25" height="167" fill-opacity="1" rx="4" ry="4">
</g>
<g class="highcharts-markers" visibility="visible" zIndex="0.1" transform="translate(27,20) scale(1 1)">
</g>

我得到了错误: ERROR: Element // found (@class,‘High图表-串联-group’)//rect未找到

提前感谢

样本:

代码语言:javascript
复制
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
<script type="text/javascript">
var rand="1390977827";
</script>
</head>
<body class="rdx_auto_cursor">
<div class="chart" data-highcharts-chart="1">
<div id="highcharts-2" class="highcharts-container" style="position: relative; overflow: hidden; width: 1029px; height: 250px; text-align: left; line-height: normal; z-index: 0; font-family: "Lucida Grande","Lucida Sans Unicode",Verdana,Arial,Helvetica,sans-serif; font-size: 12px; left: 0.199997px; top: 0.199997px;">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="1029" height="250">
<desc>Created with Highcharts 3.0.2</desc>
<defs>
<clipPath id="highcharts-3">
<rect fill="none" x="1" y="1" width="980" height="198">
</rect>
</clipPath>
</defs>
<g class="highcharts-series-group" zIndex="3">
<g class="highcharts-series highcharts-tracker highcharts-tracker highcharts-tracker" visibility="visible" zIndex="0.1" transform="translate(27,20) scale(1 1)" style="cursor:pointer;" clip-path="url(#highcharts-3)">
<rect fill="rgb(86,161,220)" x="478" y="100" width="25" height="100" fill-opacity="1" rx="4" ry="4">
</rect>
</g>
<g class="highcharts-markers" visibility="visible" zIndex="0.1" transform="translate(27,20) scale(1 1)">
</g>
</g>
</svg>
</div>
</body>
</html>
EN

回答 1

Stack Overflow用户

发布于 2014-01-23 13:07:41

您正在尝试单击SVG元素,对吗?

参见http://www.qaautomation.net/?p=388 "XPath名称空间“

试试这个表达式:

代码语言:javascript
复制
//*[local-name()='g']
   [contains(@*[local-name()='class'],'highcharts-series-group')]
   //*[local-name()='rect']

也许有一种方法可以注册SVG命名空间,然后使用

代码语言:javascript
复制
//svg:g[contains(@svg:class,'highcharts-series-group')]//svg:rect

更详细的是:

代码语言:javascript
复制
//*[local-name()='g' and namespace-uri()='http://www.w3.org/2000/svg']
   [contains(
        @*[local-name()='class' and namespace-uri()='http://www.w3.org/2000/svg'],
       'highcharts-series-group')]
   //*[local-name()='rect']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21306925

复制
相关文章

相似问题

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