функция:
def twoclicks(idoutter,idinner):
wait = WebDriverWait(driver, 20)
wait.until(EC.element_to_be_clickable((By.XPATH, "//input[contains(@id," + idoutter + ") and @value='...']"))).click()
sleep(5)
wait.until(EC.element_to_be_clickable((By.ID, idinner))).click()
Эта функция используется, чтобы щелкнуть элемент, затем всплыть через несколько секунд и щелкнуть элемент всплывающего окна.
Я продолжаю получать этоошибка, хотя я пытался добавить sleep()
в свою функцию, и это противоречиво, так как иногда я получаю его, а другие нет.
Моя предыдущая функция была:
def twoclicks(idoutter,idinner):
outter = driver.find_element_by_xpath("//input[contains(@id," + idoutter + ") and @value='...']")
outter.click()
sleep(10)
driver.find_element_by_id(idinner).click()
sleep(7)
хотямоя вторая функция - плохая практика, и первая должна быть улучшением, но я не получил это исключение, используя свою вторую. Как я могу настроить свою первую общую функцию, чтобы избавиться от этой ошибки.
пожалуйста, обратите внимание, что код является непрерывным вызовом для подобных функций, таких как:
twoclicks("'button1'", 'button2')
twoclicks("'button3'", 'button4')
Непонятное для div это:
<div class="rich-mpnl-mask-div-opaque rich-mpnl-mask-div" id="PWBFormID:managerModalPanelDiv" style="z-index: -1;"><button class="rich-mpnl-button" id="PWBFormID:managerModalPanelFirstHref"></button></div>
в html-файле серого цвета (при проверке).
Я видел много методов, таких как использование execute_script()
для блокировки div с разделяемым классом выше, но проблема в том, что я использую функцию для него и имею десятки кнопок, которые не будут иметь этой проблемы или потенциально могут иметьэто с другойКласс аренды, который делает избавление от таких случаев без написания вручную кода для них отдельно для каждого случая за пределами моей twoclicks()
функции очень трудным.