пытаясь запустить цикл while, пока элемент не станет виден, затем щелкните этот элемент - PullRequest
0 голосов
/ 19 июня 2019

Мне нужно, чтобы этот цикл продолжался, как только элемент виден, а затем нажмите на этот элемент.

пытался использовать ожидаемые условия, но я нуб, поэтому я могу что-то делать не так.

# wait until apply clickable
apply = wait(driver,10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "body > associate > div > adjust-schedule > div > list-adjustments > div > basecard > div:nth-child(3) > div > fieldset > div > table.table.table-striped > tbody > tr:nth-child(1) > td:nth-child(6) > button")))

while True:
     try:
         apply = driver.find_element_by_css_selector("body > associate > div > adjust-schedule > div > list-adjustments > div > basecard > div:nth-child(3) > div > fieldset > div > table.table.table-striped > tbody > tr:nth-child(1) > td:nth-child(6) > button")
         apply.click()
     except:
         ignored_exceptions = (NoSuchElementException, StaleElementReferenceException,)
         clckfilter = wait(driver, 10, ignored_exceptions=NoSuchElementException)\
             .until(EC.presence_of_element_located((By.XPATH, "/html/body/associate/div/adjust-schedule/div/list-adjustments/div/basecard/div[2]/div/fieldset/div/table[1]/thead/tr/th[4]/button")))
         clckfilter.click()
         apply.click()
         driver.find_element_by_css_selector("body > associate > div > adjust-schedule > div > list-adjustments > div > basecard > div:nth-child(3) > div > fieldset > div > table.table.table-striped > tbody > tr:nth-child(1) > td:nth-child(6) > div > button.btn.btn-primary").click()
     # if: EC.presence_of_element_located(By.CSS_SELECTOR, "body > associate > div > adjust-schedule > div > list-adjustments > div > basecard > div:nth-child(3) > div > fieldset > div > table.table.table-striped > tbody > tr:nth-child(1) > td:nth-child(6) > button"): continue

Если я удаляю apply.click и следующую строку, программа будет зацикливаться так, как мне нужно, но я не могу понять, как заставить ее зацикливаться, пока не появится кнопка apply.(Это становится видимым, когда моя работа публикует смену)

1 Ответ

0 голосов
/ 19 июня 2019

Попробуйте это:

def click():
try:
    wait = WebDriverWait(self.browser, 15)
    wait.until(EC.visibility_of_element_located(“selector”))
    driver.find_element_by_css_selector(“selector”).click()
except:
    Click()

В приведенном выше коде я создал отдельный метод для нажатия на этот элемент в «попробовать», я написал код для нажатия на этот элемент, и если элемент не виденчем в секции кроме того же вызова метода снова, пока элемент не видим.

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