Извлечь ссылку из XPath с помощью Selenium Webdriver и Python?

Я новичок в селен 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 ответов


можно использовать 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, поэтому выше приведено представление BS вашего xpath (насколько я понимаю).