Selenium Javascript Executor Click () выполняет поиск элемента на странице перед тем, как щелкнуть страницу - PullRequest
0 голосов
/ 28 мая 2020

Я автоматизирую веб-сайт с помощью Selenium, но click() не работает. Он возвращает элемент, который нельзя прокрутить до просмотра.

Я использовал Javascript Executor для вызова click(), код написан для поиска элемента на странице, по которой щелкнули после щелчка (). Однако Selenium пытается найти элемент до того, как щелкнет по веб-сайту.

Я проверил веб-сайт во время работы скрипта, он пытается найти элемент, а затем щелкает по странице, на которой он находится. Как это исправить?

(код ниже)

Я попытался подождать, пока элемент будет доступен для щелчка, используя WebDriver. Однако время ожидания истекает каждый раз, так что у меня нет идей. Любая помощь приветствуется.

  Find_Section = Driver.find_element_by_xpath('//div[contains(text()="Text"]')
  Driver.execute_script("arguments[0].click();", Find_Section)
  Tester = Driver.find_element_by_partial_link_text('Test19')
  Tester.click()

Изменить:

Я считаю, что понял, в чем проблема, согласно WebDriver click () vs JavaScript click () click () ведет себя как настоящий пользователь, а execute_script - нет, а просто вызывает событие, поэтому я считаю, что происходит, это execute_script нажимает на событие, но не делает то же самое, что и click (), поэтому он не загружает страницу правильно.

Причина, по которой я использую execute_script, заключается в том, что метод click () не может каждый раз прокручивать элемент в поле зрения.

Я могу ошибаться относительно причины, по которой я так думаю не работает если да поправьте меня

1 Ответ

0 голосов
/ 29 мая 2020

Я наконец понял это, так как никто здесь не поможет мне всем, кто заинтересован, вам нужно вставить оператор ожидания перед следующим элементом, например

try:
    time.sleep(2) # Could be WebDriverWait
    Find_Example = driver.find_element_by_partial_link_text('Example')
    time.sleep(2) # Try to make bot less noticeable 
    Find_Example.click()
except InvalidElement: # Defined in the import section
   # Syntax may be wrong i wrote this by hand in this little text window
   print("\033[31m Could Not Find The Desired Element [STATUS] \033[31m")
   exit()

...