Попробуйте использовать EC и ниже xpath.
Вариант 1:
Проверьте, существует ли ссылка, и нажмите (вы можете добавить атрибуты для ссылки в xpath, если вы ищете какую-либо конкретную ссылку)
link =WebDriverWait(driver,10).until(EC.presence_of_element_located((By.XPATH,"//div[@class='card' and div[normalize-space(.)='Bar']]/a")))
if (link):
link.click()
Опции 2:
Использование разных xpath и len
links =WebDriverWait(driver,10).until(EC.presence_of_all_elements_located((By.XPATH,"//div[@class='card']/div[normalize-space(.)='Bar']/following-sibling::a[normalize-space(.)='View Item']")))
if len(links)>0:
links[0].click()
Вариант 3:
Если вы не уверены, что существуют какие-либо уровни между B
и A
, вы можете использовать приведенный ниже xpath.
links =WebDriverWait(driver,10).until(EC.presence_of_all_elements_located((By.XPATH,"//div[normalize-space(.)='Bar']/ancestor::div[@class='card']//a[normalize-space(.)='View Item']")))
if len(links)>0:
links[0].click()