【问题标题】:Find element with Selenium使用 Selenium 查找元素
【发布时间】:2021-11-04 19:41:45
【问题描述】:
我需要在亚马逊页面上找到 class="a-icon a-icon-addon couponBadge",例如 this。
如果类存在,我需要设置变量x == 0,如果它不存在,我需要设置变量x == 1。
我试过这段代码,但它不起作用。我该如何检查?
try:
couponBadge = driver.find_elements_by_class_name("a-icon a-icon-addon couponBadge")
if couponBadge != None:
x == 0
else:
x == 1
except AttributeError:
print("error")
【问题讨论】:
标签:
python
selenium
web-scraping
【解决方案1】:
您需要使用一个等号而不是两个等号来分配给一个变量。
例如x = 1
看起来 Selenium 的 get_elements_by_class_name 函数只支持输入单个类名,而不是您的示例中显示的多个,因此您可能需要查看 driver.find_element_by_css_selector()。
例如driver.find_element_by_css_selector('.a-icon.a-icon-addon.couponBadge')
【解决方案2】:
请试试这个:
couponBadge = driver.find_elements_by_class_name("a-icon a-icon-addon couponBadge")
if couponBadge:
x = 0
else:
x = 1
driver.find_elements_by_class_name 返回一个列表。
如果存在与此定位器匹配的元素,则列表将非空,因此它将被解释为布尔值 True。否则将被解释为 False。
此外,要将值分配给变量,您应该使用单个 =,而不是 ==。
== 用于比较。
此外,正如 CrunchyBox 所述,您应该使用find_element_by_css_selector,而不是get_elements_by_class_name。