首页 > 解决方案 > 如果 Elif 问题 / Selenium Python

问题描述

我制作了以下代码来抓取一些网站。使用 Selenium 在研究栏上迭代产品代码列表。如果没有找到结果(if driver.find_element_by_css_selector("div[class='search-did-you-mean']"):),我只需清除研究栏以进行另一次搜索。如果有一些结果(elif driver.find_element_by_css_selector("div[class='result-search']"):),我会刮掉它

这是代码:

for product in product_list:
    inputElement = driver.find_element_by_id("q")
    inputElement.send_keys(product[0])
    inputElement.send_keys(Keys.ENTER)
    inputElement.click()
    time.sleep(5)
    if driver.find_element_by_css_selector("div[class='search-did-you-mean']"):
        time.sleep(5)
        clearResearch = driver.find_element_by_id("q")
        WebDriverWait(driver, 10).until_not(EC.visibility_of_element_located((By.ID, "overley")))
        clearResearch.send_keys(Keys.CONTROL + "a")
        clearResearch.send_keys(Keys.DELETE)
    elif driver.find_element_by_css_selector("div[class='result-search']"):
        time.sleep(5)
        item['price'] = driver.find_element_by_css_selector("span[class='sale-price']").text
        item['desc'] = driver.find_element_by_css_selector("h3[class='product-name']").text
        print(item)

列表的第一个产品代码没有结果,因此将其清除并给出新代码。第二项出现问题,有结果,但我的 elif 条件似乎不理解,因为我得到一个Unable to locate element: div[class='search-did-you-mean']错误。

你知道我的代码有什么问题吗?非常感谢

标签: pythonselenium

解决方案


如果没有找到元素,这是 selenium 行为将抛出异常,将其包装在try-except

first_product = None
try:
    first_product = driver.find_element_by_css_selector("div[class='search-did-you-mean']"
except: pass

if first_product:
    .....

推荐阅读