元素永远不会被selenium python看到,但在selenium IDE

时间:2017-10-16 13:12:28

标签: python selenium-webdriver selenium-ide

我已经处理了这几天,现在我放弃了搜索和尝试

我正在编写一个带有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&#243;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&#241;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">&#191;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                               
        

            ¿Ha olvidado su contraseña?         

                                     

                                 使用una cuenta asignada parainiciarsesión。                               Correoelectrónico                                                                                           Contraseña                                                                                                                                                      ¿Recordar cuenta?                                                                                               Cancelar                               
        

            ¿Ha olvidado su contraseña?         

                                     

1 个答案:

答案 0 :(得分:1)

如果有人遇到相同的问题,那么所有的问题就是存在两个具有相同ID的元素,第一个元素不可见,第二个元素(想要的元素)可见。硒试图找到不可见的(第一个)