Python Selenium中如何正确定位含多类名的按钮元素?
正确定位Selenium中带多类名的按钮
为啥之前的代码失败?
- Selenium的
By.CLASS_NAME只能传单个类名,不能用空格分隔多个类(空格在CSS规则里是后代选择器,不是多类名的写法)。 - 你代码里还写错了变量:
var(-rem14)应该是var(--rem14),少了一个减号,这也会导致匹配失败。
几种可行的定位方法
1. 用CSS选择器拼接所有类名
把每个类名前面加.,连起来写(注意修正变量名):
button = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.login.w-100.button-large.px-[var(--rem14)].button-brand.items-center.justify-center.button.inline-flex')))
2. 精简类名,选唯一组合
不用全用,挑几个能唯一识别这个按钮的类就行,比如login+button-brand+button-large,代码更清爽:
button = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.login.button-brand.button-large')))
3. 结合元素属性定位
如果类名容易变,可以搭配type属性一起定位:
button = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, 'button[type="button"].login.button-brand')))
额外提醒
复制类名时的换行、多余空格浏览器都会自动忽略,重点是选对选择器语法——处理多类名元素,优先用CSS_SELECTOR或者XPATH,别用By.CLASS_NAME。
内容的提问来源于stack exchange,提问作者rickw
相关产品推荐
相关产品推荐

