使用Selenium Webdriver和Python从XPath中提取链接?

时间:2013-03-13 14:25:53

标签: python python-2.7 selenium-webdriver

我是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"

1 个答案:

答案 0 :(得分:10)

您可以使用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表示(据我所知)。