python-3.x - 如何使用 selenium Python 单击具有动态 ID 的按钮
问题描述
我尝试使用 selenium 按下按钮,但每次访问网站时都会生成 ID。我尝试使用从 Google Chrome 获得的 xpath 和 Css 选择器,但它似乎使用的是 ID,因此它不可靠。继承人的HTML代码
<ul data-componentname="gender">
<li id="4ed02d40-a727-4c69-9bb6-b39bcb752bfc" class="">
<input type="button">
<span>Male</span>
</li>
<li id="76e7055e-ac37-4d12-bec3-27f9ca3410c0" class="">
<input type="button">
<span>Female</span>
</li>
解决方案
单击男性 或女性按钮诱导WebDriverWait
并element_to_be_clickable
跟随xpath
点击男性:
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//ul[@data-componentname='gender']//li[./span[text()='Male']]/input[@type='button']"))).click()
点击女性:
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//ul[@data-componentname='gender']//li[./span[text()='Female']]/input[@type='button']"))).click()
注意:您需要导入以下内容。
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
已编辑
elementmale=WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//ul[@data-componentname='gender']//li[./span[text()='Male']]/input[@type='button']")))
driver.execute_script("arguments[0].click();", elementmale)
推荐阅读
- node.js - 如何使用 Mongoose 在 Node js 中将此出生日期转换为年龄
- android - 无法从 android studio 中的 Firebase 获取和显示数据
- r - 在R中的表格输出中显示数学方程
- javascript - 拖放的分层问题
- c++ - 存在引用和值重载时的模棱两可的函数调用
- opencv - 从灰度图像中提取像素值
- c# - AWS lambda .net core 2.1 列出 S3 存储桶中的文件
- c++ - 为什么我的函数不能传递正确的值?
- docker - 如果已使用 ENTRYPOINT,如何将 curl(或类似软件)与“docker run”一起使用?
- javascript - 在运行时更改元素的 `backgroundImage` 会干扰类属性