8

我对 Seleniun WebDriver 和 Python 比较陌生,我的问题可能有点基本。

所以,我有以下 HTML 代码:

<a class="wp-first-item" href="admin.php?page=account">Account</a>

试图从中提取 href,作为 XPath 的手段,知道它的 XPath 是".//*[@id='toplevel_page_menu']/ul/li[2]/a".

我怎么做?

driver.find_element_by_xpath(".//*[@id='toplevel_page_menu']/ul/li[2]/a").link

或者

driver.find_element_by_xpath(".//*[@id='toplevel_page_menu']/ul/li[2]/a").href

似乎不起作用,导致:

AttributeError: 'WebElement' object has no attribute 'link'

我期待结果是这样的"admin.php?page=account"

4

1 回答 1

15

你可以使用get_attribute

element = driver.find_element_by_xpath(".//*[@id='toplevel_page_menu']/ul/li[2]/a")
href = element.get_attribute('href')
print href

通常我使用 Selenium 导航到页面,检索源并使用BeautifulSoup解析它:

from BeautifulSoup import BeautifulSoup

# On the current page
source = driver.page_source
soup = BeautifulSoup(source)

href = soup('<the tag containing the anchor>',{'id':'toplevel_page_menu'})[0]('ul')[0]('li')[2]('a')[0]['href']

不幸的是,BeautifulSoup 不支持 xpath,所以上面是您的 xpath 的 BS 表示(据我所知)。

于 2013-03-13T14:51:32.383 回答