Селен не может взаимодействовать с любым элементом на этом сайте - PullRequest
0 голосов
/ 11 марта 2020

Я пытаюсь автоматизировать создание базы данных фотографий этого сайта: mcmaster он использует ajax.

, но невозможно нажать на его элементы первой страницы Я попробовал эти коды:

driver.find_element_by_id("//span[@class='s7']").click()

или

driver.find_element_by_id("//a[span/@class='s7']").click()

или

driver.find_elements_by_tag_name("a")[5].click()

, но там написано элемент неразрешимый и нет ничего другого, с помощью чего можно найти элементы страницы.

Я просто не могу понять, если тег a не активен, что нажимается?

1 Ответ

1 голос
/ 11 марта 2020

На веб-странице есть 39 элементов https://www.mcmaster.com/screws, которые можно идентифицировать с помощью стратегии Locator :

driver.find_element_by_id("//span[@class='s7']")

Но все эти элементы не видимы / интерактивны . Таким образом, в качестве альтернативы для идентификации элементов в разделе Fasteners по мере их появления на веб-странице вы можете использовать следующую xpath based *1019* Locator Strategy :

  • Блок кода:

    driver.get('https://www.mcmaster.com/')
    print([my_elem.text for my_elem in WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.XPATH, "//h2[normalize-space()='Fasteners']//following::ul[1]//li/a")))])
    
  • Консольный вывод:

    ['Screws & Bolts', 'Threaded Rods & Studs', 'Eyebolts', 'U-Bolts', 'Nuts', 'Washers', 'Shims', 'Helical & Threaded Inserts', 'Spacers & Standoffs', 'Pins', 'Anchors', 'Nails', 'Nailers', 'Rivets', 'Rivet Tools', 'Staples', 'Staplers', 'Key Stock', 'Retaining Rings', 'Cable Ties', 'Lanyards', 'Magnets']
    

Нажать на первый Элемент, который вы можете использовать следующие на основе Стратегия локатора :

driver.get('https://www.mcmaster.com/')
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//h2[normalize-space()='Fasteners']//following::ul[1]/li/a"))).click()   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...