我遇到了获得正确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并且可能会解释这种感觉就像我是新的一样: - )
答案 0 :(得分:1)
你的问题不是很清楚。当你说“在xml中没有随机创建的唯一东西是'问题'”时,我不确定你的意思。
也就是说,正如您已经推断的那样,选择这个特定元素的一个可能的XPath将是:
//span[@id = 'X6_5']
如果你确实想要匹配“问题”(这是元素的值),你也可以这样做:
//span[. = 'problem']
答案 1 :(得分:0)
错误实际上是由于查询本身根本不是有效的XPath。
.//*[@name, 'problem']
你打算在这做什么?这是equals
,starts with
,ends 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']