使用Selenium如何将WebDriverWait用于值

2024-10-03 06:19:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个下拉框“A”和“B”。当我在框“A”中选择一个选项时,框“B”中的选项会更改。因此,我必须等待几秒钟以刷新值

这是“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”。。有人能帮忙吗


Tags: byvaluedriverdebodyselectdooption
1条回答
网友
1楼 · 发布于 2024-10-03 06:19:14

如果您有一些特定的值集,在选择“A”后将显示在框“B”中,则您可以对“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)

相关问题 更多 >