如何使用 OR 运算符修改 Python XPATH 代码

How to modify Python XPATH code using OR operator

下面是我的代码。如果存在,我想单击显示“全部加载”的按钮。如果没有,我想单击“下一步加载”。但是,使用下面的代码,即使存在“全部加载”btn,它也只会单击“下一步加载”。我该如何解决这个问题?

try:
   load_btn = WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"/html/body/div[2]/div[7]/div/div/div[8]/a[contains(text(),'Load all') or contains(text(),'Load next')]"))) 
   load_btn.click()
   time.sleep(3)                 
except:
   pass

我试过使用 | 运算符,但这并没有给我我需要的答案。 我该如何解决这个问题?

谢谢。

我建议您将加载按钮分成两个可区分的网页元素,而不是一个。当认为出错时更容易维护和找出根本原因。

示例代码:

def click_load_button(self):
    try:
        load_btn = WebDriverWait(driver,10)
        .until(EC.element_to_be_clickable((By.XPATH,"//a[contains(text(),'Load all')]")))
        
        print("Click load all button")
        time.sleep(3)
    except:
        load_btn = WebDriverWait(driver,10)
        .until(EC.element_to_be_clickable((By.XPATH,"//a[contains(text(),'Load next')]")))
        print("Click load next")
        time.sleep(3)

    load_btn.click()
"//a[contains(text(),'Load all')] | //a[contains(text(),'Load next')]"

如果您正在寻找两个元素并且需要第一个元素,或者找到第二个元素,这就是将它们组合起来的方式。

完整的 xpath 也很脆弱。

try:
    load_all_btn = WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH," /html/body/div[2]/div[7]/div/div/div[8]/a[2]"))) 
    load_all_btn.click()
    time.sleep(3)                 
except:
    try:
       load_more_btn = WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH," /html/body/div[2]/div[7]/div/div/div[8]/a[1]"))) 
       load_more_btn.click()
       time.sleep(3)
    except:
       pass