使用Python和Selenium检查两个元素是否存在

cmssoen2  于 2023-06-25  发布在  Python
关注(0)|答案(2)|浏览(84)

我试图检查两个元素(A,B)在网站上的存在。我需要的是点击元素A,如果它存在,如果不继续寻找B,如果它存在,点击它。下面是我的示例代码的一部分。

try:
        abc= WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "#rso > div > div > div:nth-child(1) > div > div > h3 > a")))
    except NoSuchElementException:
        continue
    except TimeoutException:
        continue
    else:
        element.click()

try:
        element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "#rso > div > div > div:nth-child(1) > div > div > h3 > a")))
    except NoSuchElementException:
        continue
    except TimeoutException:
        continue
    else:
        abc.click()
        time.sleep(randint(1, 15))

print('Process completed successfully')

我面临的问题是代码只查找第一个元素,而不会继续进行下一次尝试。任何建议将是伟大的。

2izufjch

2izufjch1#

尝试在下面单击第一个元素,如果没有找到,请单击第二个元素:

try:
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "first.element"))).click()
except TimeoutException:
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "second.element"))).click()

P.S.用真实的的CSS选择器替换"first.element""second.element"
如果这两个元素可能不在第页中:

try:
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "first.element"))).click()
except TimeoutException:
    try:
        WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "second.element"))).click()
    except TimeoutException:
        print("Both elements not found")
gdx19jrr

gdx19jrr2#

wait = WebDriverWait(driver, 30)
try:
    elements = wait.until(
        EC.presence_of_all_elements_located(
            (By.CSS_SELECTOR, 'first.element'
                              'second.element')
        )
    )
    if elements[0].tag_name == 'first.element':
        print("login fail")
    elif elements[0].tag_name == 'second.element':
        print("login")
except:
    print("Both elements not found")

相关问题