Как щелкнуть ссылку на изображение, используя селен, что приводит к ошибке TimeoutException - PullRequest
0 голосов
/ 26 декабря 2018

Я пытаюсь щелкнуть первое изображение, которое появляется для данного поиска во Flickr, используя Selenium, как показано в коде:

image = WebDriverWait(browser, 30).until(EC.element_to_be_clickable((By.XPATH, "//div[starts-with(@style,'transform: translate(0px, 0px)')]//a[@role='heading']")))
image.click()

Я попытался сделать это шаг за шагом в Python IDLE ион работает безупречно, но когда я запускаю скрипт, он поднимает TimeoutException, как будто веб-элемент никогда не становится кликабельным.Есть идеи, что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 26 декабря 2018

В соответствии с HTML DOM в url , чтобы щелкнуть первое изображение, которое появляется для данного поиска во Flickr с использованием Selenium вместо стиля атрибут Я бы предложил использовать более надежный атрибут следующим образом:

  • Использование CSS_SELECTOR:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.view.photo-list-view>div.view.photo-list-photo-view.awake a.overlay[href*='photos']"))).click()
    
  • Использование XPATH:

    WebDriverWait(browser, 30).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='view photo-list-view']/div[@class='view photo-list-photo-view awake']//a[@class='overlay' and @role='heading'][contains(@href, 'photos')]"))).click()
    
  • Примечание : необходимо добавить следующие операции импорта:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
0 голосов
/ 26 декабря 2018

его нельзя щелкнуть, потому что элемент перекрывается другим, и нужно hover, чтобы сделать элемент <a> кликабельным, простое решение состоит в том, чтобы изменить условие на .presence_of_element_located()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...