С Selenium, как использовать WebDriverWait для значения - PullRequest
2 голосов
/ 22 марта 2020

У меня есть два выпадающих списка "A" и "B". Когда я выбираю опцию в поле «A», опции внутри поля «B» меняются. Поэтому мне нужно подождать несколько секунд, чтобы обновить sh значения.

Это код "B" HTML:

<select name="ctl00$body$ddpProjeto" onchange="javascript:setTimeout('__doPostBack(\'ctl00$body$ddpProjeto\',\'\')', 0)" id="body_ddpProjeto" class="form-control" required="required">
<option value="Sistema de Bombeamento de Água Gelada  - 2019">Sistema de Bombeamento de Água Gelada  - 2019</option>
<option value="Obras Civis no Nível Térreo do Forno RW25 - 2019">Obras Civis no Nível Térreo do Forno RW25 - 2019</option>
<option value="Fluxogramas de Utilidades RW25 - 2020">Fluxogramas de Utilidades RW25 - 2020</option>
<option value="Quadros Elétricos RW25 - 2020">Quadros Elétricos RW25 - 2020</option>
<option value="EMPLACAMENTO BALIZADAS FORNO RW25 - 2020">EMPLACAMENTO BALIZADAS FORNO RW25 - 2020</option>
<option value="OBRAS CIVIS NÍVEL TÉRREO FORNO RW25 - 2020 - 2020">OBRAS CIVIS NÍVEL TÉRREO FORNO RW25 - 2020 - 2020</option>

Я пытался с этим кодом:

def EDM_CRIA_DOCUMENTO(titulo, areafisica,classe,tipo="Desenhos de detalhamento (Drawing)",projeto="Quadros Elétricos RW25 - 2020"):
global driver

opt_af = Select(driver.find_element_by_name(r"ctl00$body$ddpAreaFisica"))  #Acha a lista Area Fisica
opt_af.select_by_visible_text(areafisica)

wait = WebDriverWait(driver, 10)
wait.until(ec.text_to_be_present_in_element(By., projeto))

opt_proj = Select(driver.find_element_by_id("body_ddpProjeto"))  #Acha a lista projeto
opt_proj.select_by_visible_text(projeto)  # Seleciona na lista "Nome_do_Projeto"

Но я не знаю, как установить «WebDriverWait» в этом состоянии .. Кто-то может помочь?

1 Ответ

0 голосов
/ 22 марта 2020

Если у вас есть определенный набор c значений, который будет отображаться в поле «B» после выбора «A», тогда вы можете применить ожидание к любому элементу «B» и всякий раз, когда этот элемент присутствует, вы может работать на "B".
Вы можете сделать это следующим образом:

def EDM_CRIA_DOCUMENTO(titulo, areafisica,classe,tipo="Desenhos de detalhamento (Drawing)",projeto="Quadros Elétricos RW25 - 2020"):
global driver

opt_af = Select(driver.find_element_by_name(r"ctl00$body$ddpAreaFisica"))  #Acha a lista Area Fisica
opt_af.select_by_visible_text(areafisica)

# Wait for the first value in "B" to be present 
WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, "//option[contains(text(),'Sistema de Bombeamento de')]")))

# Now operate on the element
opt_proj = Select(driver.find_element_by_id("body_ddpProjeto"))  #Acha a lista projeto
opt_proj.select_by_visible_text(projeto)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...