xpath遍历表单的指定元素

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


问题

当使用xpath表达式去遍历表单数据时,如果直接复制浏览器定位的xpath表达式,只能定位到特点位置的元素,无法动态去进行遍历
在这里插入图片描述

例子

例如我们要遍历下图中的table表单下每一行tr的计划号元素,如果直接复制xpath路径是
//*[@id=“tb_detial2”]/tbody/tr[2]/td/table/tbody/tr[1]/td[3],这个只能定位到这一个元素
在这里插入图片描述

代码

定位到表单table的tr元素,可以看到一共有8个tr,定位这个tr元素直接复制浏览器的xpath路径即可,得到元素组Rows

Rows=driver.find_elements(By.XPATH,'//*[@id="tb_detial2"]/tbody/tr')

用for循环遍历Rows

for row in Rows:
		planId=row.find_element(By.XPATH,'.//td/table/tbody/tr[2]/td[2]/input').get_attribute("value")

其中.//td/table/tbody/tr[2]/td[2]/input 表达式,是根据当前的每一行元素去进行定位的,这样子就能根据每一行的tr去遍历得到相应的计划号元素

  • 10
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您使用SeleniumWire来获取请求和响应的信息。以下是一个示例代码,演示如何获取请求的HDR值、响应值、cookie等信息: ```python import seleniumwire from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 创建一个浏览器实例 options = webdriver.EdgeOptions() options.add_experimental_option('detach', True) # 启动一个新的SeleniumWire请求拦截器 seleniumwire_options = { 'backend': 'mitmproxy' } driver = seleniumwire.webdriver.Edge(options=options, seleniumwire_options=seleniumwire_options) url = 'https://example.com' browser.get(url) # 等待用户名输入框可见 username_input = WebDriverWait(browser, 10).until(EC.visibility_of_element_located((By.ID, 'username'))) # 找到用户名输入框并输入用户名 username_input.send_keys(username) # 找到密码输入框并输入密码 password_input = WebDriverWait(browser, 10).until(EC.visibility_of_element_located((By.ID, 'password'))) password_input.send_keys(password) # 模拟回车键,提交表单 login_btn = browser.find_element(by=By.ID, value='denglub') login_btn.send_keys(Keys.ENTER) # 获取所有的请求 requests = driver.requests # 遍历请求并获取所需信息 for request in requests: # 获取请求的URL url = request.url # 获取请求的方法,例如GET、POST等 method = request.method # 获取请求的头部信息 headers = request.headers # 获取请求的参数 params = request.params # 获取请求的响应 response = request.response # 获取响应的状态码 status_code = response.status_code # 获取响应的头部信息 response_headers = response.headers # 获取响应的内容 content = response.body # 获取响应的cookie cookies = response.cookies # 打印请求和响应信息 print(f"URL: {url}") print(f"Method: {method}") print(f"Headers: {headers}") print(f"Params: {params}") print(f"Status Code: {status_code}") print(f"Response Headers: {response_headers}") print(f"Content: {content}") print(f"Cookies: {cookies}") # 关闭浏览器 browser.quit() ``` 请注意,您需要安装`SeleniumWire`库和相应的浏览器驱动程序(如`msedgedriver`)来运行此代码。此外,您还需要安装`mitmproxy`来启动SeleniumWire拦截器。 希望这可以帮助到您!如果您有任何其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值