我已经处理了这几天,现在我放弃了搜索和尝试
我正在编写一个带有selenium的testCase,它是关于一个隐藏的表单,按下某个按钮后它变得可见(使用bootstrap函数“whatever.show()”)。因为我是硒的新手,我尝试的第一件事是用seleniumIDE制作测试用例,其中一切正常,然后导出到pyhon文件,当我试图超越脚本时,它打破说元素不可见即可。我试图等到元素可见但从未这样做过。我试过的功能可见
try:
element = WebDriverWait(driver, 10).until(
EC.visibility_of_element_located((By.ID, "Email"))
)
finally:
driver.quit()
还有别的东西,他们有另一个面板,里面有id =“Email”的输入,但是我试图先让面板找到元素,点击按钮后没有面板可见硒,尽管它是硒在单击按钮
后,我可以看到面板可见 terceroPanel = driver.find_element_by_id("divFormTercero")
argosPanel = driver.find_element_by_id("divFormArgos")
emailInput = argosPanel.find_element_by_id("Email")
print(terceroPanel.is_displayed())
print(argosPanel.is_displayed())
print(emailInput.is_displayed())
emailInput.clear()
emailInput.send_keys("andresmauriciogomezr@gmail.com")
argosPanel是我感兴趣的面板,terceroPanel是另一个,三个控制台输出都是“False”
我最后尝试的完整代码是
driver.get(self.base_url + "/IngresosOnline/")
driver.find_element_by_css_selector("#btnUserArgos").click()
try:
element = WebDriverWait(driver, 10).until(
EC.visibility_of_element_located((By.ID, "Email"))
)
finally:
driver.quit()
terceroPanel = driver.find_element_by_id("divFormTercero")
argosPanel = driver.find_element_by_id("divFormArgos")
emailInput = argosPanel.find_element_by_id("Email")
print(terceroPanel.is_displayed())
print(argosPanel.is_displayed())
print(emailInput.is_displayed())
emailInput.clear()
emailInput.send_keys("andresmauriciogomezr@gmail.com")
发送密钥时会中断。甚至我可以在抛出异常之前看到输入获得焦点
非常感谢,如果有人能帮我解决这个问题。
这里的HTML,代码不是我的,我正在测试一些合作伙伴的应用程序
div class="col-md-12" id="divFormArgos" hidden>
<section id="loginFormArgos">
<form action="/IngresosOnline/Account/Login" class="form-horizontal" method="post" role="form"><input name="__RequestVerificationToken" type="hidden" value="CwUxjXIIsx9b0IXeDhdb7FXlhTiMuYusRMvjZjG2KIXFfSi8lhC_4j19OXZKzU8bfffxY5d_1cmzigNUCcd78AJDf7_DZXGmhnQ_ayWWWks1" /> <h4>Use una cuenta Argos para iniciar sesión.</h4>
<hr />
<div class="form-group">
<label class="col-md-4 control-label" for="Email">Correo electrónico</label>
<div class="col-md-8">
<input class="form-control" data-val="true" data-val-email="El campo Correo electrónico no es una dirección de correo electrónico válida." data-val-required="El campo Correo electrónico es obligatorio." id="Email" name="Email" type="text" value="" />
<span class="field-validation-valid text-danger" data-valmsg-for="Email" data-valmsg-replace="true"></span>
</div>
</div>
<div class="form-group">
<label class="col-md-4 control-label" for="Password">Contraseña</label>
<div class="col-md-8">
<input class="form-control" data-val="true" data-val-required="El campo Contraseña es obligatorio." id="Password" name="Password" type="password" />
<span class="field-validation-valid text-danger" data-valmsg-for="Password" data-valmsg-replace="true"></span>
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<div class="checkbox">
<input data-val="true" data-val-required="El campo ¿Recordar cuenta? es obligatorio." id="RememberMe" name="RememberMe" type="checkbox" value="true" /><input name="RememberMe" type="hidden" value="false" />
<label for="RememberMe">¿Recordar cuenta?</label>
</div>
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Iniciar sesión" class="btn btn-primary" />
<a class="btn btn-danger" id="btnCancelar1">Cancelar</a>
</div>
</div>
<br />
</form>
</section>
使用una cuenta asignada parainiciarsesión。 Correoelectrónico Contraseña ¿Recordar cuenta? Cancelar
使用una cuenta asignada parainiciarsesión。 Correoelectrónico Contraseña ¿Recordar cuenta? Cancelar
答案 0 :(得分:1)
如果有人遇到相同的问题,那么所有的问题就是存在两个具有相同ID的元素,第一个元素不可见,第二个元素(想要的元素)可见。硒试图找到不可见的(第一个)