2017-02-12 194 views
0

使用Modelizer/Selenium包運行PHP,Laravel和Selenium。我有一個簡單的表單(用LaravelCollective製作),沒有隱藏的元素或花哨的javascript。硒找不到可見的元素

表格和測試代碼張貼如下。

我得到

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

我查看了所有類似的問題。沒有什麼不是超具體的另一個問題。

這裏是我的代碼,然後我的形式...

$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') 
    ; 
} 

,然後我的形式...

<!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> 

我的理解是,硒查找由它的價值元素。在這種情況下,「按城市搜索」。我不明白爲什麼它不可見。

+0

參見方法所期待的點擊,也許它會尋找一個按鈕或鏈接類型,你實際上有一個輸入類型,在這種情況下,你可能需要使用一個CSS選擇器來識別元素。 – lauda

回答

-1

您可能想要使用 API執行所需的操作。根據Modelizer/Laravel-Selenium wiki,上可用的信息,點擊查找錨標籤的名稱,標識或文本屬性。因此,你可以嘗試以下操作:

$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')