Прокрутите и найдите элемент, используя селен питон - PullRequest
0 голосов
/ 05 июня 2018

Я хочу прокрутить контакты в сети WhatsApp и нажать на конкретный контакт.Я могу прокручивать контакты, но не могу найти конкретный элемент, чтобы получить конкретный контакт, потому что HTML динамический, так как я прокручиваю контакты, которые меняются.Вот код:

target = '"name"'
panel = driver.find_element_by_class_name('_1NrpZ')
a = 0
while elem is None:
  a += 5
  try:
      driver.execute_script('arguments[0].scrollTop = %s' %a, panel)
      elem = driver.find_element_by_xpath('//span[@title=' + target + ']')
      time.sleep(5)
  except:
       pass

ac = ActionChains(driver)
ac.move_to_element(elem).click().perform()
time.sleep(2)

Он не останавливается и продолжает прокручиваться до последнего контакта.Я думаю, что когда я прокручиваю новый HTML не загружается, есть ли какое-то решение?

1 Ответ

0 голосов
/ 05 июня 2018

Я обнаружил, что time.sleep (x) обычно является проблемой при написании аналогичного кода для Selenium.Проблема в том, что он приостанавливает все вычисления и имеет тенденцию причинять больше вреда, чем пользы, по крайней мере, по моему опыту.Я стараюсь по возможности использовать ожидаемые условия для этого типа вещей.

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

wait = WebDriverWait(my_selenium_driver, 15)    
        my_button = wait.until(EC.element_to_be_clickable((By.XPATH,self._my_button_xpath))).click()

Например, вы можете сохранить текущую цепочку действий, которая отвечает за прокрутку списка, и разрешить это делать, ново время этой прокрутки EC.wait ищет нужный элемент и щелкает по нему, как только он виден.

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