javascript - 有没有办法使用 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 函数来做这样的事情?
解决方案
要将所有 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()))")
推荐阅读
- python - 在python中映射开关列表
- angularjs - 在 Angular js 中使用路由时在索引页面中创建控制器
- c# - 包含 MotW 的远程脚本不包含 MotW 和 ExecutionPolicy RemoteSigned 不可测试
- rest - Restful Web 服务 - @Produces 中的错误(MediaType.APPLICATION_XML)
- .net - 在 SQL Server 的事务中运行更新时从表中选择数据
- android - AWS AppSync Android NullPointerException
- ios - 仅水平滚动图像的登录页面
- typescript - Keyof 推断字符串 | 键只是字符串时的数字
- performance - 如何使用 loadrunner 在性能测试中设计 loadprofile?
- ios - 同时使用 Metal 和 SceneKit 的问题