Могу ли я обновлять sh, пока не будет найден элемент в селене Python - PullRequest
0 голосов
/ 06 августа 2020

Я хочу знать, как он может обновлять sh, пока элемент не будет найден, по какой-то причине этот код не будет работать, он просто через l oop.

while True:
    try:
        element = driver.find_elements_by_xpath('//button[text()="SIGN UP"]')
    except NoSuchElementException:
        driver.refresh()
    else:
        break
driver.find_element_by_xpath('//button[text()="SIGN UP"]')
print("FOUND")

Ответы [ 2 ]

0 голосов
/ 06 августа 2020

Я раньше не использовал селен, но готов поспорить, что, если драйвер не найдет ничего, соответствующего этому xpath, он просто вернет None. Другими словами, ваш код все еще действителен, потому что element просто None, что не вызывает ошибки. Вместо этого вы можете использовать while l oop, чтобы продолжать обновлять, пока не найдет элемент. Добавление этой функции в отдельный поток или процесс не было бы плохой идеей, если у вас есть другие вещи, происходящие в основном l oop.

def retry_until_id_found(element_id, max_retries=100):
    retries = 0
    while not driver.find_element_by_xpath(element_id)
        if retries <= max_retries:
            time.sleep(3)
            driver.refresh()
            retries+=1
        else:
            print(f"ELEMENT {element_id} NOT FOUND")
            return None
    print(f"FOUND {element_id}")
    return driver.find_element_by_xpath(element_id)

element = retry_until_id_found(r'//button[text()="SIGN UP"]')
0 голосов
/ 06 августа 2020

Думаю, что ниже c поможет вам

  `if(element.visible) //false
  {
    driver.refresh()
    n = 5 // you can give end limit
   for(i=0;i<n;i++)
   {
    if(element.visible) //true
     {
      driver.find_element_by_xpath('//button[text()="SIGN UP"]')
      print("FOUND")
      i=n; //break the loop
     }
    else
     {
      driver.refresh()
     }
   }
  }`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...