2017-02-12 6 views
0
sichtbar ist.

Ausführen von PHP, Laravel und Selen mit dem Modelizer/Selenium-Paket. Ich habe eine einfache Form (mit LaravelCollective), die keine versteckten Elemente oder ausgefallenes Javascript hat.Selen kann das Element nicht finden, das auf Seite

Das Formular und der Testcode sind unten aufgeführt.

ich

1) can_search_by_city::testCanSearchByCity 
Modelizer\Selenium\Exceptions\CannotFindElement: Cannot find element: Search by City isn't visible on the page 

ich alle ähnlichen Fragen überprüft haben. Nichts, das für ein anderes Problem nicht besonders spezifisch ist.

Hier ist mein Code und dann meine Form ...

$this->visit('/login') 
     ->type($this->User->email, 'email') 
     ->type('secret', 'password') 
     ->press('Login') 
     ->see('Searches') 
     ->type('queensbury ny','address') 
     ->type('100','distance') 
     ->wait(20) 
     ->click('Search by City') 
     ->see('Glens Falls #81') 
    ; 
} 

und dann meine Form ...

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 

    <title> Welcome 
- Elk RV Parking</title> 

    <!-- Fonts --> 
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css" integrity="sha384-XdYbMnZ/QjLh6iI4ogqCTaIjrFk87ip+ekIjefZch0Y+PvJ8CDYtEs1ipDmPorQ+" crossorigin="anonymous"> 
    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:100,300,400,700"> 

    <!-- Styles --> 
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous"> 

    <style> 
     body { 
      font-family: 'Lato'; 
     } 

     .fa-btn { 
      margin-right: 6px; 
     } 
    </style> 
</head> 
<body id="app-layout"> 
    <nav class="navbar navbar-default navbar-static-top"> 
     <div class="container"> 
      <div class="navbar-header"> 

       <!-- Collapsed Hamburger --> 
       <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#app-navbar-collapse"> 
        <span class="sr-only">Toggle Navigation</span> 
        <span class="icon-bar"></span> 
        <span class="icon-bar"></span> 
        <span class="icon-bar"></span> 
       </button> 

       <!-- Branding Image --> 
       <a class="navbar-brand" href="http://localhost:8000"> 
        Elk RV Parking 
       </a> 
      </div> 

      <div class="collapse navbar-collapse" id="app-navbar-collapse"> 
       <!-- Left Side Of Navbar --> 
       <ul class="nav navbar-nav"> 
        <li><a href="http://localhost:8000/home">Home</a></li> 
       </ul> 

       <!-- Right Side Of Navbar --> 
       <ul class="nav navbar-nav navbar-right"> 
        <!-- Authentication Links --> 
              <li class="dropdown"> 
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"> 
           Ed Greenberg <span class="caret"></span> 
          </a> 

          <ul class="dropdown-menu" role="menu"> 
           <li><a href="http://localhost:8000/logout"><i class="fa fa-btn fa-sign-out"></i>Logout</a></li> 
          </ul> 
         </li> 
            </ul> 
      </div> 
     </div> 
    </nav> 

      <div class="container"> 
     <div class="row"> 
      <div class="col-md-10 col-md-offset-1"> 
       <div class="panel panel-default"> 
        <div class="panel-heading">Welcome to Elk RV Parking</div> 

        <div class="panel-body"> 

         <h1>Searches</h1> 
         <h2>by distance from a city or address</h2> 
         <form method="POST" action="http://localhost:8000/search/address" accept-charset="UTF-8" id="search-by-city"><input name="_token" type="hidden" value="CBphF66rzzk3MbYiNpLK2EsC1jxqVAt6XwRQA9vo"> 
         <input name="_token" type="hidden" value="CBphF66rzzk3MbYiNpLK2EsC1jxqVAt6XwRQA9vo"> 

         <div class="row"> 
          <div class="col-md-8">Enter a city, state, a state, an address, anything that Google Maps would properly search</div> 
          <div class="col=md-4">Distance</div> 
         </div> 
         <div class="row"> 
          <div class="col-md-8"><input size="50" name="address" type="text" value=""></div> 
          <div class="col=md-4"><input name="distance" type="text"></div> 
         </div> 
         <div> 
          <div><input type="submit" value="Search by City"></div> 
         </div> 
         </form> 

         <h2>byLodge Number</h2> 
         <form method="POST" action="http://localhost:8000/search/lodgenumber" accept-charset="UTF-8" id="search-by-lodge-number"><input name="_token" type="hidden" value="CBphF66rzzk3MbYiNpLK2EsC1jxqVAt6XwRQA9vo"> 
         <input name="_token" type="hidden" value="CBphF66rzzk3MbYiNpLK2EsC1jxqVAt6XwRQA9vo"> 

         <div class="row"> 
          <div class="col-md-8">Enter a lodge number</div> 
         </div> 
         <div class="row"> 
          <div class="col-md-8"><input size="10" name="lodge_number" type="text" value=""></div> 
         </div> 
         <div class="row"> 
          <div class="col-md-8"><input type="submit" value="Search by Lodge Number"></div> 
         </div> 
         </form> 



        </div> 
       </div> 
      </div> 
     </div> 
    </div> 

    <!-- JavaScripts --> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.3/jquery.min.js" integrity="sha384-I6F5OKECLVtK/BL+8iSLDEHowSAfUo76ZL9+kGAgTRdiByINKJaqTPH/QVNS1VDb" crossorigin="anonymous"></script> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script> 
    </body> 
</html> 

Mein Verständnis ist, dass Selen für das Element aussieht, indem sie es Wert ist. In diesem Fall "Suche nach Stadt". Ich sehe nicht, warum es nicht sichtbar ist.

+0

sehen, was Klick-Methode erwartet, vielleicht sieht es für einen Button oder Link-Typen und Sie tatsächlich einen Eingabetyp haben, in diesem Fall können Sie das Element mit einem CSS-Selektor identifizieren müssen . – lauda

Antwort

-1

Sie können drücken drücken Sie API, um die erforderliche Operation durchzuführen. Basierend auf den Informationen, die auf Modelizer/Laravel-Selenium wiki, verfügbar sind, klicken Sie auf, um nach dem Namen, der ID oder der Texteigenschaft des Anchor-Tags zu suchen. Daher können Sie Folgendes versuchen:

$this->visit('/login') 
    ->type($this->User->email, 'email') 
    ->type('secret', 'password') 
    ->press('Login') 
    ->see('Searches') 
    ->type('queensbury ny','address') 
    ->type('100','distance') 
    ->wait(20) 
    ->press('Search by City') 
    ->see('Glens Falls #81') 
Verwandte Themen