Удалите sleep()
, это очень плохая практика - использовать интервалы сна с жестким кодом.Измените получатели вашего элемента с помощью WebDriverWait:
def twoclicks(idoutter,idinner):
wait = WebDriverWait(driver, 20) # if you are going to use this interval somewhere else, define it in a higher-level scope
wait.until(EC.presence_of_element_located((By.XPATH, "//input[contains(@id," + idoutter + ") and @value='...']"))).click()
wait.until(EC.presence_of_element_located((By.ID, idinner))).click()
WebDriverWait.until()
ожидает выполнения условия, а затем возвращает соответствующий элемент, для которого метод click()
будетназывается.Он будет ждать до 20 секунд - аргумент в своем конструкторе, проверяя страницу на наличие условия каждые 500 миллисекунд.
Вам нужно будет добавить этот импорт, чтобы использовать этот подход:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
Счастливая побуждающая !;)