在Selenium(Python)中使用XPath Selector'follow-sibling :: text()'

alu*_*ach 8 python selenium xpath

我正在尝试使用Selenium(在Python中)从网站中提取一些信息.我一直在选择带有XPath的元素,但是在使用以下兄弟选择器时遇到了麻烦.HTML如下:

<span class="metadata">
    <strong>Photographer's Name: </strong>
    Ansel Adams
</span>
Run Code Online (Sandbox Code Playgroud)

我可以选择"摄影师的名字"

In [172]: metaData = driver.find_element_by_class_name('metadata')

In [173]: metaData.find_element_by_xpath('strong').text
Out[173]: u"Photographer's Name:"
Run Code Online (Sandbox Code Playgroud)

我正在尝试选择标记后的文本部分(示例中为"Ansel Adams").我假设我可以使用以下兄弟选择器,但我收到以下错误:

In [174]: metaData.find_element_by_xpath('strong/following-sibling::text()')
ERROR: An unexpected error occurred while tokenizing input
The following traceback may be corrupted or invalid
The error message is: ('EOF in multi-line statement', (328, 0))
... [NOTE: Omitted the traceback for brevity] ...
InvalidSelectiorException: Message: u'The given selector strong/following-sibling::text() is either invalid or does not result in a WebElement. The following error occurred:\n[InvalidSelectorError] The result of the xpath expression "strong/following-sibling::text()" is: [object Text]. It should be an element.' 
Run Code Online (Sandbox Code Playgroud)

关于为什么这不起作用的任何想法?

sha*_*p00 8

@RossPatterson是对的.麻烦的是文本'安塞尔亚当斯'不是WebElement,所以你不能使用find_elementfind_elements.如果您将HTML更改为

<span class="metadata">
    <strong>Photographer's Name: </strong>
    <strong>Ansel Adams</strong>
</span>
Run Code Online (Sandbox Code Playgroud)

然后find_element_by_xpath('strong/following-sibling::*[1]').text返回'安塞尔亚当斯'.