为我的xml获取正确的xpath

时间:2013-04-09 15:10:52

标签: xml xpath webdriver

我遇到了获得正确xpath的问题 我有这个xml:

<span
 id="X6_5"
 class="FormatTableElementReadonly"
 onblur=" applyToSameControl(this); "
 onclick="handleOnClick(this, event);" 
 onchange="handleOnChange(this, event);" 
 onfocus="handleOnFocus(this, event);" 
 style="" 
 scripttype="text" 
 readonly="readonly" 
 tabindex="" 
 sctype="Text" 
 datatype="string" 
 buttonid="Column4" 
 dvdvar="" 
 ref="var/L.user.array/L.user.array[5]" 
 name="var/L.user.array/L.user.array[5]"
>
 problem
</span>

我的第一个猜测是.//*[@id='X6_5'] 这并没有真正按照我想要的方式工作,因为我可以看到xml中没有随机创建的唯一东西就是“问题”所以它给了我X6_5上的内容:-P ..那么.//*[@name='problem']就是我的猜测但是这给了我:

  

由于以下错误,无法找到带有xpath表达式.//* [@ name,'problem']的元素:

     

错误:INVALID_EXPRESSION_ERR:DOM XPath异常51(警告:服务器未提供任何堆栈跟踪信息)

很抱歉不清楚,第一次使用此功能但感谢大家尝试。

我想要做的是使用我在selenium中的数组来计算网站上的值。举个例子,我的数组包含“问题,exp,链接器”,在我的网站上有一个列表,应该包含所有这些,但有时会出现问题,其中一个值丢失了。我想检查是否是这种情况。

.//*[@id='X6_5']只是列表中的位置,可以是任何不感兴趣的值。所以我需要看看我是否能在列表中找到“问题”。我尝试过“span [contains'problem']”之类的东西; aso但没有成功。所有这些都在iframe中,但我可以按.//*[@id='X6_5']但无法看到“span”的名称或按“span [contains'problem']”;不知道我还能给你什么,这可能有所帮助,所以如果有什么东西丢失就这么说,我会尽我所能回答。

你猜的任何人都可以帮助我使用xpath并且可能会解释这种感觉就像我是新的一样: - )

4 个答案:

答案 0 :(得分:1)

你的问题不是很清楚。当你说“在xml中没有随机创建的唯一东西是'问题'”时,我不确定你的意思。

也就是说,正如您已经推断的那样,选择这个特定元素的一个可能的XPath将是:

//span[@id = 'X6_5']

如果你确实想要匹配“问题”(这是元素的值),你也可以这样做:

//span[. = 'problem']

答案 1 :(得分:0)

错误实际上是由于查询本身根本不是有效的XPath。

.//*[@name, 'problem']

你打算在这做什么?这是equalsstarts withends with还是contains搜索?

您可能正在寻找,以使该查询正常工作(工作定义为不抛出异常,不一定匹配任何元素):

//*[@name='problem']

您需要解释有关该问题的更多信息,因为它根本不清楚。您提供的HTML和第一个 XPath查询将获得该元素。如果不是,那么告诉我们为什么,如何以及做什么。向我解释为什么它不起作用。

答案 2 :(得分:0)

请避免在Xpath之前添加前缀。这导致了这个问题。删除,然后重试。 这是Html而不是Xml。

答案 3 :(得分:0)

要根据文本中的文本匹配元素,不使用像@name这样的属性,而是使用text()函数:

//span[text() = 'Problem']

如果span文本中有任何空格导致失败,您可以使用normalise-space函数将其删除,如下所示:

//span[normalize-space(.) = 'Problem']