python里用Selenium 或者别的库,保存chrome里面的 properties 所有数据

如图 ,自己 目前用Selenium 无法保存 定位到数据的 properties 所有数据
我先自己定位到

img

该回答引用于ChatGPT:
您可以使用Selenium中的execute_script函数来执行JavaScript代码,从而获取当前页面中标签的属性值。具体步骤如下:

  1. 打开Chrome浏览器,并加载需要获取属性值的网页;
  2. 运行以下Python代码,找到需要获取属性值的标签,并使用execute_script函数获取其属性值:
from selenium import webdriver

# 创建Chrome浏览器驱动
driver = webdriver.Chrome()

# 加载网页
driver.get("https://example.com")

# 找到需要获取属性值的标签
element = driver.find_element_by_id("my-element-id")

# 使用execute_script执行JavaScript代码获取标签属性值
attribute_value = driver.execute_script("return arguments[0].getAttribute('title');", element)

# 打印属性值
print(attribute_value)

在上述示例代码中,我们通过find_element_by_id函数找到id为"my-element-id"的标签,然后使用execute_script函数执行JavaScript代码"return arguments[0].getAttribute('title');"获取该标签的"title"属性值。

您可以根据自己需要修改上述代码来获取不同标签的各种属性值。另外,如果您需要获取整个页面中所有标签的属性值,可以使用Selenium中的find_elements方法找到所有标签,然后逐一获取它们的属性值。

该回答引用ChatGPT
如果您想保存Chrome的DevTools中的Properties数据,则需要使用Chrome的Remote Debugging协议与Selenium相结合。以下是一个Python示例:

python
from selenium import webdriver
import json
import requests

# 启动Chrome并开启Remote Debugging协议
options = webdriver.ChromeOptions()
options.add_argument("--remote-debugging-port=9222")
options.add_argument("--headless")
driver = webdriver.Chrome(options=options)

# 导航到目标URL
driver.get("https://www.example.com")

# 使用Remote Debugging协议获取当前页面的所有属性
response = requests.get("http://localhost:9222/json")
json_response = json.loads(response.content.decode("utf-8"))
webSocketDebuggerUrl = json_response[0]["webSocketDebuggerUrl"]
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--headless")
chrome_options.add_argument(f"--remote-debugging-port=9222")
chrome_options.add_argument(f"--user-data-dir={user_data_dir}")
chrome_options.add_argument(f"--profile-directory={profile_directory}")

browser = webdriver.Chrome(options=chrome_options)
browser.get(f'chrome-devtools://devtools/bundled/inspector.html')
browser.execute_script(f'window.WS = new WebSocket("{webSocketDebuggerUrl}");')

js_script = "window.WS.send('{"id": 1,"method": "Runtime.getProperties","params": {"objectId": "window", "ownProperties": true}}');"

browser.execute_script(js_script)
props_response = browser.execute_script("return window.propsResp;")

# 打印所有属性及其值
for prop in props_response['result']['result']:
print(prop['name'], prop['value'])

# 关闭浏览器会话
browser.quit()


此代码使用Chrome的Remote Debugging协议来获取当前页面的所有属性,并将其打印出来。请注意,此代码使用了Python的requests和json模块来处理来自Remote Debugging API的JSON响应。此外,需要确保在调用Selenium的Chrome浏览器实例之前,特别地开启--remote-debugging-port选项。

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
在使用 Selenium 定位并保存 Chrome 中的 properties 数据之前,需要先确认您想要保存的是哪一个选项卡下的数据,例如网络请求、资源、元素等选项卡。

关于如何通过 Selenium 定位并保存 Chrome 中的 properties 数据,下面给出一个简单的示例供参考:

```python
from selenium import webdriver
import time

启动 Chrome 浏览器

driver = webdriver.Chrome()

访问目标页面

driver.get("https://www.baidu.com%22/)

切换到“元素”选项卡

driver.find_element_by_css_selector(".devtools-tabbar .devtools-tab:nth-child(2)").click()

time.sleep(1)

定位到需要保存的属性

property_element = driver.find_element_by_css_selector(".tree-outline .webkit-line-content")

获取属性名和属性值

name = property_element.find_element_by_css_selector(".name").get_property("textContent")
value = property_element.find_element_by_css_selector(".value").get_property("textContent")

打印属性名和属性值

print(name, value)

关闭浏览器

driver.quit()
`

以下内容部分参考ChatGPT模型:
首先,可以使用Selenium的execute_script方法来调用JavaScript代码,从而获取元素的属性值。具体的代码如下:

from selenium import webdriver

# 启动Chrome浏览器
driver = webdriver.Chrome()

# 打开网页
driver.get("https://www.baidu.com")

# 定位元素
elem = driver.find_element_by_id("kw")

# 获取元素的属性值
properties = driver.execute_script("var items = {}; "
                                    "for (index = 0; index < arguments[0].attributes.length; ++index) { "
                                    "items[arguments[0].attributes[index].name] = arguments[0].attributes[index].value }; "
                                    "return items;", elem)

# 输出属性值
print(properties)

# 关闭浏览器
driver.quit()

这段代码会打开Chrome浏览器,并打开百度首页,然后定位到搜索框元素,通过JavaScript代码获取元素的所有属性值,并输出到控制台。

需要注意的是,这种方法只能获取元素的属性值,如果要获取其他的一些信息,比如元素的文本内容或者CSS属性值,就需要使用其他的方法。
如果我的建议对您有帮助、请点击采纳、祝您生活愉快

使用获取完整path,可以定位

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

引用new bing作答:
properties 是 Chrome DevTools 中的一个选项卡,可以显示当前页面元素的一些属性和事件。如果您想要获取这些属性和事件的信息,可以使用 Selenium 的 execute_script() 方法,执行 JavaScript 代码来获取。

下面是一个示例代码,可以打开 Chrome 浏览器,加载指定网页,打开 DevTools 的 Properties 选项卡,获取当前页面中一个元素的 properties 内容,并将其保存到本地文件中:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

# 配置 Chrome DevTools Protocol API
caps = DesiredCapabilities.CHROME
caps["goog:loggingPrefs"] = {"performance": "ALL"}

# 启动 Chrome 浏览器
service = Service('/path/to/chromedriver')
driver = webdriver.Chrome(service=service, desired_capabilities=caps)

# 加载网页
driver.get('https://www.example.com')

# 打开 DevTools 的 Properties 选项卡
driver.execute_script('''
    var tab = new Promise(function(resolve, reject) {
        chrome.devtools.panels.create(
            "Properties",
            "",
            "panel.html",
            function(panel) {
                panel.onShown.addListener(function(win) {
                    resolve(win);
                });
            }
        );
    });

    tab.then(function(win) {
        win.document.querySelector("#search").value = "";
        win.document.querySelector(".filter-all").click();
    });
''')

# 获取一个元素的 properties 内容
element = driver.find_element_by_css_selector('div.my-element')
properties = driver.execute_script('''
    return Array.from(window.webstoreProperties.properties).find(function(prop) {
        return prop.name === arguments[0];
    }).value;
''', element.get_attribute('id'))

# 将 properties 内容保存到本地文件
with open('properties.txt', 'w', encoding='utf-8') as f:
    f.write(properties)

这段代码中,首先使用 execute_script() 方法执行了一段 JavaScript 代码,创建了一个名为 Properties 的选项卡,并将其切换到了 All 过滤器。然后,使用 find_element_by_css_selector() 方法获取了一个名为 my-element 的

元素,并使用 execute_script() 方法执行了另一段 JavaScript 代码,获取了该元素的 properties 内容。最后,将获取到的 properties 内容保存到本地文件中。