selenium循环获取某一结点的子结点信息

如图,在<ul>结点下有很多个结构类似的<li>结点,我们的需求就是获取到每一个<li>结点下的第二个<p>结点的文本。

 可以用循环获取:

items = web.find_elements(by=By.XPATH, value='/html/body/div[4]/div[3]/div/div/ul/*')
lens = len(items)
for index in range(lens):
    temp = []
    temp.append(items[index].find_element(by=By.XPATH, value='//li['+str(index+1)+']/p[2]').text)#分类

selenium的find_element支持通配符*,可以使用这个获取所有子结点。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Selenium可以通过浏览器的开发者工具获取网络信息。可以使用Selenium的WebDriver实例来打开浏览器,然后使用开发者工具中的Network面板来获取网络信息。可以使用Selenium的execute_script()方法来执行JavaScript代码,从而获取网络信息。例如,可以使用以下代码来获取页面中所有的请求: ``` from selenium import webdriver # 创建WebDriver实例 driver = webdriver.Chrome() # 打开页面 driver.get('https://www.example.com') # 执行JavaScript代码,获取所有请求 requests = driver.execute_script('return window.performance.getEntries();') # 输出请求信息 for request in requests: print(request['name'], request['duration']) ``` 在上面的代码中,首先创建了一个Chrome的WebDriver实例,然后打开了一个页面。接着,使用execute_script()方法执行JavaScript代码,获取页面中所有的请求。最后,遍历所有请求,输出请求的URL和请求时间。 ### 回答2: Selenium是一款流行的Web前端自动化测试工具,而网络信息对于Web前端自动化测试来说是至关重要的。在Selenium获取网络信息可以帮助我们监控流量、检测响应时间、调试页面等等。下面详细介绍如何使用Selenium获取网络信息。 1. 安装chrome driver 在使用Selenium获取网络信息前,需要先安装chrome driver。chrome driver是Chrome浏览器的驱动程序,它可以通过Selenium控制Chrome浏览器。 2. 启动Chrome浏览器 使用Selenium获取网络信息前,需要先启动Chrome浏览器。可以使用如下代码启动Chrome浏览器: ``` from selenium import webdriver driver = webdriver.Chrome() ``` 3. 查看网络请求 启动Chrome浏览器后,可以通过driver对象查看网络请求。Selenium提供了一个名为“performance”的属性,它包含了关于页面加载、资源加载和网络请求的详细信息。 ``` logs = driver.get_log('performance') ``` 4. 解析网络请求 获取网络请求后,需要解析它们才能使用。Selenium中使用了类似于Chrome开发者工具的网络日志格式,网络日志是一个字典,它包含了加载资源的时间、资源大小、资源类型、URL和状态码等信息。 ``` import json for log in logs: message = json.loads(log['message']) print(message) ``` 5. 分析网络请求 获取网络请求信息后,可以对它们进行分析。例如,可以计算每个资源的加载时间,检查响应码,查找请求错误等等。 ``` response = message['message']['params']['response'] url = response['url'] status = response['status'] start_time = message['message']['params']['timestamp'] print("URL {0} took {1:.2f} seconds with status code {2}".format(url, (end_time - start_time) / 1000.0, status)) ``` 通过以上步骤,我们可以轻松获取网络信息并对其进行分析。网络信息对于Web前端自动化测试来说非常重要,掌握Selenium获取网络信息的方法可以帮助我们更好地进行Web前端自动化测试。 ### 回答3: Selenium 是一个常用的自动化测试工具,用于模拟用户在浏览器上进行操作并获取页面数据。当我们需要获取页面中的 Network 信息,如请求 URL、响应状态、响应头、响应体等,Selenium 提供的一些方法可以帮助我们实现此功能。 1. 配置 Chrome 浏览器 首先,我们需要安装 Chromedriver,并设置 ChromeOptions 以打开开发者工具并记录 Network 信息: ```python from selenium import webdriver from selenium.webdriver.chrome.options import Options options = webdriver.ChromeOptions() options.add_experimental_option("detach", True) options.add_argument("--auto-open-devtools-for-tabs") driver = webdriver.Chrome(options=options) driver.get("https://www.google.com") ``` 其中,`add_experimental_option("detach", True)` 可使 Chrome 运行于后台,而 `add_argument("--auto-open-devtools-for-tabs")` 则自动打开开发者工具。 2. 获取 Network 信息 在页面加载完成后,我们可以使用 Selenium 提供的 `execute_script` 方法运行 JavaScript 代码,以获取页面 Network 信息。下面是一个获取 Google 搜索结果中每个链接的响应状态码的例: ```python import time links = driver.find_elements_by_xpath("//a") # 获取页面中的所有链接 for link in links: url = link.get_attribute("href") # 获取链接地址 driver.execute_script("fetch('{}').then(res => console.log(res.status))".format(url)) time.sleep(1) # 等待请求完成,避免太快抓取被封 IP ``` 代码中,我们先通过 `find_elements_by_xpath` 方法获取页面中的所有链接,并逐个获取其地址。然后,通过 `execute_script` 方法运行 JavaScript 代码,其中 `fetch` 方法是浏览器内置的网络请求方法,调用它可以异步发起请求并获取响应信息。最后,我们打印了响应的状态码,并通过 `time.sleep` 方法暂停一秒,以避免太快抓取被封 IP。 除了状态码,我们还可以通过类似的方式获取请求 URL、响应头和响应体等信息,只需要调用相应的 JavaScript API 即可。 总之,Selenium 能够与浏览器交互,并通过 JavaScript 代码获取 Network 信息,这为我们实现 Web 爬虫、性能分析等提供了便利。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值