当前位置: 代码迷 >> python >> 使用 Selenium 如何使用 WebDriverWait 获取值
  详细解决方案

使用 Selenium 如何使用 WebDriverWait 获取值

热度:56   发布时间:2023-07-16 11:07:29.0

我有两个下拉框“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”..有人可以帮忙吗?

如果您有一些特定的值集将在选择“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)
  相关解决方案