<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 从Intro
href
锚标记值中检索值
//*[@id="pageNavContainer"]/div/div/a[2]/@href
但是当我运行脚本以获取具有上述 xpath 的文本时,我收到以下错误:
InvalidSelectorException: Message: invalid selector: The result of the xpath express
我也尝试使用getattribute
但没有用。任何人都可以帮助我找出正确的 xpath 是什么?提前致谢
您收到的错误说明了一切 - 您提供的选择器不是有效的选择器; 问题来自最后的/@href
结构。
在 XPath 中,可以肯定地使用此语法解决特定节点的属性。然而,在Selenium(Robotframework包装(中,定位器必须指向一个元素,而不是它的属性 - 因此当它评估你的表达式时,它会抛出异常。
如果将定位器更改为
//*[@id="pageNavContainer"]/div/div/a[2]
,并使用Get Element Attribute
传递 href 作为目标,您将获得所需的值。
要提取文本介绍,您可以使用以下xpath
:
//*[@id="pageNavContainer"]//div[@class='m-page-nav m-bottom-2']//div[@class='m-page-nav-list']//following-sibling::a[1]
接下来,您可以使用 Get 元素属性提取href
:
${HREF}= Get Element Attribute ${element_xpath}@href