Selenium如何检测亚马逊页面指定class是否存在并给变量赋值
问题原因梳理
find_elements_by_class_name仅支持传入单个类名,你传入了3个空格分隔的类名属于语法错误,多类匹配需要使用CSS选择器实现find_elements类方法的返回值是匹配元素组成的列表,无匹配结果时返回空列表而非None,原有couponBadge != None的判断永远为真,逻辑完全失效- 变量赋值错误使用了比较运算符
==,应该使用赋值运算符=才能完成x的赋值操作 - 原有异常捕获的类型错误,上述代码运行出错不会触发
AttributeError,捕获逻辑无法生效
正确实现代码
如果使用Selenium 4.0及以上版本,推荐使用官方推荐的By定位方式,代码如下:
from selenium.webdriver.common.by import By # 前面保留你原有打开亚马逊页面的逻辑 coupon_badge_list = driver.find_elements(By.CSS_SELECTOR, ".a-icon.a-icon-addon.couponBadge") # 列表非空说明存在优惠券标签,赋值为0,否则赋值为1 x = 0 if coupon_badge_list else 1
如果使用Selenium 4.0以下旧版本,也可以直接调用CSS选择器定位方法:
# 前面保留你原有打开亚马逊页面的逻辑 coupon_badge_list = driver.find_elements_by_css_selector(".a-icon.a-icon-addon.couponBadge") x = 0 if coupon_badge_list else 1
内容的提问来源于stack exchange,提问作者hermes_44
相关产品推荐
相关产品推荐

