未检索到Robot Framework锚标记值

时间:2018-03-14 06:22:03

标签: python selenium xpath selenium-webdriver robotframework

<div class="m-page-nav m-bottom-2" data-hbui="mobile-nav" role="navigation">
<span aria-`enter code here`label="Collapse page navigation" class="a-icon m-page-nav-icon m-page-nav-icon-collapse">expand_more</span>
<span aria-label="Expand page navigation" class="a-icon m-page-nav-icon m-page-nav-icon-expand">expand_more</span>
<button data-scroll-header class="m-page-nav-button"></button>
<div data-gumshoe class="m-page-nav-list">
<a data-scroll href="#intro" tabindex="0">Intro</a>
<a data-scroll href="#courseHeadingDescription" tabindex="0">Enrolment Disclaimer</a>
<a data-scroll href="#admissionRequirements" tabindex="0">Admission Requirements</a>
<a data-scroll href="#programRequirements" tabindex="0">Program Requirements</a>
<a data-scroll href="#professionalOutcomes" tabindex="0">Professional Outcomes</a>
<a data-scroll href="#recognitionMasters" tabindex="0">Recognition of Achievement</a>
<a data-scroll href="#fees" tabindex="0">Program Fees</a>
</div>
</div>

我对机器人框架有点新意。我正在尝试使用以下xpath从href锚标记值Intro检索值

//*[@id="pageNavContainer"]/div/div/a[2]/@href

但是当我运行脚本来获取带有上述xpath的文本时,我收到以下错误:

InvalidSelectorException: Message: invalid selector: The result of the xpath express

我也尝试使用getattribute,但它没有用。 任何人都可以帮我解决这个问题的正确xpath吗? 提前致谢

2 个答案:

答案 0 :(得分:0)

要提取文字简介,您可以使用以下xpath

//*[@id="pageNavContainer"]//div[@class='m-page-nav m-bottom-2']//div[@class='m-page-nav-list']//following-sibling::a[1]

接下来,您可以使用获取元素属性来提取href

${HREF}=    Get Element Attribute    ${element_xpath}@href

答案 1 :(得分:0)

您收到的错误说明了一切 - 您提供的选择器不是有效的;问题来自最后的/@href构造。

在XPath中,可以使用此语法确定特定节点的属性。然而在Selenium(Robotframework包装)中,定位器必须指向一个元素,而不是它的属性 - 因此当它评估你的表达式时,它会抛出异常。

如果您将定位器更改为

//*[@id="pageNavContainer"]/div/div/a[2]

,并且使用Get Element Attribute传递href作为目标,您将获得所需的值。