Python Selenium下拉栏xpath值遇到随机数如何进行点击
Python Selenium代码中WEB页面点击“更多”出现下拉栏后,选择“详情”字样进行点击操作
利用xpath点击代码如下:
self.driver.find_element_by_xpath('//*[@id="dropdown-menu-9012"]/div/button/span').click()
中 9012这个menu值,页面每次刷新获取xpath时都会变,怎么获取并点击这种下拉栏中的“详情选项”?
“详情”字样的xpath://*[@id="dropdown-menu-9012"]/div/button/span
“详情”字样的selector:#dropdown-menu-9012 > div.more-btn > button:nth-child(2) > span
每次刷新页面9012这个值会变,求大神帮忙看看有没有点击这种随机xpath的方法{:1_893:} id标签是会变的 使用class标签
再不济,找个坐标定位点击 liuhaigang12 发表于 2024-7-29 14:43
id标签是会变的 使用class标签
<button data-v-6145e6ef="" type="button" class="el-button el-button--text el-button--medium" data-v-104a9d34=""><!----><!----><span>详情</span></button> 父级标签4个选项都长得一样,有方法定位吗{:1_904:} 可以在上一层遍历页面元素,然后使用get_attribute函数获取id Flanders 发表于 2024-7-29 14:50
详情 父级标签4个选项都长得一样,有方法定位吗
这不是有class标签吗 自己写xpath别复制粘贴 一般复制都是复制的id标签的 把id换成class 把原来的值换成el-button el-button--text el-button--medium" data-v-104a9d34,确定这个值是不是唯一性 minshenyao 发表于 2024-7-29 14:51
可以在上一层遍历页面元素,然后使用get_attribute函数获取id
感谢{:1_893:}
用您提供的点击方法解决了,代码如下:
# 等待按钮元素加载
buttons = WebDriverWait(driver, 10).until(
EC.presence_of_all_elements_located((By.XPATH, "//button"))
)
# 遍历按钮,找到包含"详情"文字的按钮
target_button = None
for button in buttons:
span = button.find_element_by_tag_name('span')
if span.text == '详情':
target_button = button
break
if target_button:
# 获取按钮的 id 属性
button_id = target_button.get_attribute('id')
print(f'Button ID: {button_id}')
# 点击按钮
target_button.click()
else:
print("没有找到包含'详情'的按钮") liuhaigang12 发表于 2024-7-29 14:55
把id换成class 把原来的值换成el-button el-button--text el-button--medium" data-v-104a9d34,确定这个值 ...
感谢~get_attribute('id')解决了 我记得我当时的解决方法,好像是点开了下拉按钮,然后用选项中的文字定位元素
页:
[1]
2