После некоторого тестирования я обнаружил, что проблема заключается в навигационной панели: вы прокручиваете слишком низко с помощью «прокрутки до элемента», а щелчок перехватывается навигационной панелью. Чтобы исправить это, я просто добавил scrollBy
в ваш скрипт. По сути, замените execute_script("arguments[0].scrollIntoView();", element)
на execute_script("arguments[0].scrollIntoView(); window.scrollBy(0, -200);", element)
Кроме того, я не знаю, почему вы не используете element.click()
вместо ActionChains(driver).move_to_element(element).click().perform()
, отлично работает для меня.
My тестовая функция была:
def test(url = URL_test):
driver = webdriver.Chrome(options=chrome_options,
executable_path=Path('chromedriver.exe'))
driver.maximize_window()
try:
driver.get(url)
time.sleep(5) # wait for load, too lazy to do proper way
elements = driver.find_elements_by_class_name("chevron-svg.left.chevron-down")
for element in elements:
header = element.find_element_by_xpath('../div[contains(@class, "accordion-")]/span[1]').text
print(header) # to test which ones fail
driver.execute_script("arguments[0].scrollIntoView(); window.scrollBy(0, -200);", element)
element.click()
except Exception as e:
print(e)
driver.save_screenshot("screenshot1.png")
pass
return driver