【发布时间】:2017-10-16 13:12:28
【问题描述】:
我已经处理了几天,现在我放弃了搜索和尝试
我正在用 selenium 编写一个测试用例,它是关于一个隐藏的表单,在按下某个按钮后它变得可见(使用引导函数“whatever.show()”)。因为我是 selenium 的新手,所以我尝试的第一件事是使用 seleniumIDE 制作测试用例,一切正常,然后导出到 pyhon 文件,当我尝试执行脚本时,它打破说 元素不可见。我试图等到元素变得可见,但从来没有。我尝试的功能是可见的
try:
element = WebDriverWait(driver, 10).until(
EC.visibility_of_element_located((By.ID, "Email"))
)
finally:
driver.quit()
还有别的东西,他们有另一个面板,里面有一个 id="Email" 的输入,但我试图先让面板找到元素,点击按钮后,没有面板对 selenium 可见,尽管它是运行我可以看到单击按钮后可见的面板
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 para iniciar sesión。
科雷奥电子 反对者 ¿ 记录 cuenta? 取消
使用 una cuenta asignada para iniciar sesión。
科雷奥电子 反对者 ¿ 记录 cuenta? 取消
【问题讨论】:
-
你能用一些
HTML更新问题吗? -
网站可能在显示提交按钮后做了一些厚颜无耻的事情,比如将其隐藏在另一个元素下,这样您就必须在其显示区域的某个地方物理单击它才能登录。您可以尝试使用 ActionChain:等待它可见,然后在 ActionChain 中,move_to_element(),click(),clear() 然后 send_keys,最后执行。
-
问题是它永远不会被 selenium 看到,但最奇怪的是它可以在 selenium-ide 上工作
标签: python selenium-webdriver selenium-ide