Ни в одном из примеров, которые я нахожу, не используется By.XPATH,'//*[contains(text(),
.
У меня есть работа Syntheti c, где есть вероятность появления одного из двух текстов. Если появится хоть один из них, я хочу уйти. Я хочу использовать or
, а не два отдельных WebDriverWait
.
Мой текущий код для проверки только одного текста, который работает:
WebDriverWait(driver,30).until(EC.presence_of_element_located((By.XPATH,'//*[contains(text(), "More than 3000 results")]')))
Я пробовал следующие три, но ни один из них не работает. Он не находит текст, или я получаю синтаксическую ошибку в первом примере.
WebDriverWait(driver, 30).until(ExpectedConditions.or(
EC.presence_of_element_located((By.XPATH,'//*[contains(text(), "More than 3000 results")]')),
EC.presence_of_element_located((By.XPATH,'//*[contains(text(), "The search returned zero results")]'))
));
WebDriverWait(driver,30).until(EC.presence_of_element_located((By.XPATH,'//*[contains(text(), "More than 3000 results")]', '//*[contains(text(), "The search returned zero results")]')))
WebDriverWait(driver,30).until(EC.presence_of_element_located((By.XPATH,'//*[contains(text(), "More than 3000 results")]')) or ((By.XPATH,'//*[contains(text(), "The search returned zero results")]')))
Если я смогу найти работы, я заключу его в Try/Except
с driver.quit()
в Try
.
Ниже приведены дополнительные вопросы, которые мне задали:
Я привел три примера того, что я пытался. Только в первом примере отображается синтаксическая ошибка. Второй и третий примеры просто не видят ни одного из двух сообщений, и сценарий просто продолжается.
Это синтаксическая ошибка:
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
Try the new cross-platform PowerShell https://aka.ms/pscore6
PS C:\Github\appd-selenium-scripts\Prod> & 'python' 'c:\Users\uswarv41\.vscode\extensions\ms-python.python-2020.6.91350\pythonFiles\lib\python\debugpy\launcher' '63733' '--' 'c:\Github\appd-selenium-scripts\Prod\Claims_CC_PROD_Document_Integration_Validation_Synthetic_Script.py'
File "c:\Github\appd-selenium-scripts\Prod\Claims_CC_PROD_Document_Integration_Validation_Synthetic_Script.py", line 271
WebDriverWait(driver, 30).until(ExpectedConditions.or(
^
SyntaxError: invalid syntax
PS C:\Github\appd-selenium-scripts\Prod>
Оба следующих работают сами по себе, вот почему я хочу найти правильный способ использования or
try:
time.sleep(1)
WebDriverWait(driver,30).until(EC.presence_of_element_located((By.XPATH,'//*[contains(text(), "More than 3000 results")]')))
driver.quit()
except:
print("Did not see More than 3000 results text")
Continue with script...
try:
time.sleep(1)
WebDriverWait(driver,30).until(EC.presence_of_element_located((By.XPATH,'//*[contains(text(), "The search returned zero results")]')))
driver.quit()
except:
print("Did not see The search returned zero results text")
Continue with script...