Selenium定位动态元素

selenium做网页UI自动化的时候,会遇到网页元素id/name是动态生成的情况
一、可以考虑模糊匹配定位,匹配元素定位中不变且唯一的地方.

1.可以使用如下方法:

starts-with(以什么开始)
ends-with(以什么结束)
contains 包含**

eg:
driver.find_element_by_xpath
("//div[contains(@id, ‘btn-attention’)]")
driver.find_element_by_xpath
("//div[starts-with(@id, ‘btn-attention’)]")
driver.find_element_by_xpath
("//div[ends-with(@id, ‘btn-attention’)]")
contains(a, b) 如果a中含有字符串b,则返回true,否则返回false
starts-with(a, b) 如果a是以字符串b开头,返回true,否则返回false
ends-with(a, b) 如果a是以字符串b结尾,返回true,否则返回false
在这里插入图片描述
2. 如果父级元素固定,可以先定位到父级元素,然后定位到下级元素

  • 4
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用 Selenium 定位动态元素时,你可以尝试以下几种方法: 1. 使用显式等待:使用 `WebDriverWait` 类来等待元素的出现或可点击状态。你可以指定等待的最长时间和轮询的频率,直到元素出现或可点击。 ```python from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 创建一个显式等待对象 wait = WebDriverWait(driver, 10) # 10秒为超时时间 # 等待元素出现 element = wait.until(EC.presence_of_element_located((By.ID, 'element_id'))) # 等待元素可点击 element = wait.until(EC.element_to_be_clickable((By.ID, 'element_id'))) ``` 2. 使用隐式等待:在创建 WebDriver 对象之后,设置一个全局的隐式等待时间,在查找元素时等待一段时间,直到元素出现或超时。 ```python driver.implicitly_wait(10) # 10秒为隐式等待时间 # 查找元素 element = driver.find_element(By.ID, 'element_id') ``` 3. 使用动态 XPath:如果元素的属性值是动态生成的,你可以使用 XPath 来定位元素。XPath 提供了各种方法来选择和定位元素,比如使用属性、文本内容、父子关系等。 ```python element = driver.find_element(By.XPATH, '//div[@class="dynamic_class"]') ``` 4. 使用 CSS 选择器:CSS 选择器也可以用于定位动态元素。你可以使用元素的属性、类名、标签名等来选择元素。 ```python element = driver.find_element(By.CSS_SELECTOR, 'input[name="dynamic_name"]') ``` 以上是一些常用的方法,根据具体情况选择合适的方法来定位动态元素
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值