如何使用 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
下面是我的代码。如果存在,我想单击显示“全部加载”的按钮。如果没有,我想单击“下一步加载”。但是,使用下面的代码,即使存在“全部加载”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