首页 > 解决方案 > 有没有办法使用 selenium 从 Python 中的 Javascript 调用中获取项目列表?

问题描述

所以我最近发现你可以使用 Python 中的 Selenium 在浏览器中执行 JavaScript。我有一个函数,它返回如下所示的项目列表:

var elements = document.getElementsByClassName('example');
elements = [...elements].map(el => el.children[0].children[0].getAttribute('href').toString());

在浏览器控制台中执行此操作会为您提供包含示例href的每个元素的所有孙子元素的列表。class

是否可以使用直接的 Javascript 调用或内置的 Selenium 函数来做这样的事情?

标签: javascriptpythonselenium

解决方案


要将所有 href 值提取到 python,您可以尝试以下操作:

elems = driver.find_elements_by_css_selector(".example > *:first-of-type > *:first-of-type[href]")
links = [elem.get_attribute('href') for elem in elems]

或者,如果您只想在单行调用中调用浏览器上的 js 代码:

from selenium import webdriver
driver = webdriver.Firefox()
driver.get("<your_website>") 

driver.execute_script("console.log('myElements', Array.from(document.getElementsByClassName('example')).map(elm => elm.firstElementChild.firstElementChild.getAttribute('href').toString()))")

推荐阅读