На веб-странице есть номера страниц, по которым можно перейти, чтобы перейти на следующую страницу. Номера страниц находятся в теге с href для вызова javascript.
После этого ...
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
xpath = 'appropriate_xpath_string'
wait_presence = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, xpath))
)
wait_clickable = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.XPATH, xpath))
)
И вычисление scroll_y = расстояние, необходимое для отображения элемента ...
driver.execute_script('window.scrollTo(0,', scroll_y, ')')
Я пробовал следующее:
driver_find_element_by_xpath('xpath').click()
driver_find_element_by_xpath('xpath').send_keys('\ue007')
(отправка клавиши ввода.)
driver.execute_script("arguments[0].click()", element)
( JavaScript трюк.)
ActionChains щелкает
Проблематический c Элемент:
<a href="javascript:__doThis('nl00$CPH1$dOR$n16$nl01','')">2</a>
__ doThis () функция по существу делает форму .submit () с некоторыми параметры.
Редактировать: после отправки события щелчка Developer Tools показывает ошибку:
VM1560:1 Uncaught ReferenceError: __doThis is not defined
at <anonymous>:1:1
После сканирования через HTML / js я заметил, что функция __doThis не определена в ChromeDriver , Когда я загружаю страницу в Edge или Chrome тег с функцией __doThis присутствует. Так почему же функция javascript не загружается в ChromeDriver?
РЕДАКТИРОВАТЬ 2: Я загрузил chromedriver.exe без настройки специальных параметров, и это решило проблему. Теперь мне нужно выяснить, какая опция нарушает функцию javascript страницы.
РЕДАКТИРОВАТЬ 3: Кажется, этот раздел кода ломает внутреннюю страницу javascript:
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": """
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined
})
"""
})
driver.execute_cdp_cmd("Network.enable", {})
driver.execute_cdp_cmd("Network.setExtraHTTPHeaders", {"headers": {"User-Agent": "browser1"}})
Мне нужно провести некоторое исследование, чтобы понять, почему.