2016-04-11 12 views
0

こんにちは私はDjangoアプリのテストでPhantomJS v 2.1.1をWebDriver経由で使用しています。しかし、1つの問題のあるテストのスクリーンショットからCSSを読み込んでいません。PhantomJSがCSSスタイルをロードしていません

Bootrapモーダルにいくつかのボタンがあることをテストする必要がありますが、表示されません。テストのセットアップで

ブラウザのinit:

self.browser = webdriver.PhantomJS(executable_path=settings.PHANTOMJS_PATH) 
self.browser.set_window_size(1920, 1080) 

とテストコード、それは自己:

self.browser.get(self.live_server_url + "/accounts/login/") 
self.browser.find_element_by_name("login").clear() 
self.browser.find_element_by_name("login").send_keys(user.email) 
self.browser.find_element_by_name("password").clear() 
self.browser.find_element_by_name("password").send_keys(password) 
self.browser.find_element_by_id("submit").click() 
self.browser.find_element_by_id("logout").click() 
self.browser.implicitly_wait(10) 
self.assertEqual("Ano", self.browser.find_element_by_xpath("/html/body/div[4]/div/div/div[3]/button[2]").text) 
self.assertEqual("Ne", self.browser.find_element_by_css_selector("div.modal-footer").text) 

最後に、ここでは、期待されるモーダルを生成するHTMLページの一部です:

<li> 
    <a href="#" id="logout" style="color: #ffffff">       
    <span class="glyphicon glyphicon-log-out"></span> 
    </a>      
</li> 

$(document).ready(function() { 

     $("#logout").on("click", function (e) { 
      e.preventDefault(); 
      bootbox.dialog({ 
       message: '<div class="row"> ' + 
       '<div class="col-md-12"> ' + 
       '<form class="form-horizontal" id="confirm-logout" method="post" action="/accounts/logout/"> ' + 
       "<input type='hidden' name='csrfmiddlewaretoken' value='lmXDBtPw6wSDMClUEIKOxzd8fvc3KCFL' />" + 
       '<div class="form-group"> ' + 
       '<div class="col-md-8"> ' + 
       '<div class="checkbox">' + 
       '<label>' + 
       '<input type="checkbox" ' + 
       'value="no-dialog" name="logout-confirm"> Zobrazovat tento dialog' + 
       '</label>' + 
       '</div>' + 
       '</div> ' + 
       '</div> </div>' + 
       '</form> </div> </div>', 
       title: "Odhlásit", 
       buttons: { 
        danger: { 
         label: "Ne", 
         className: "btn-danger", 
         callback: function() { 
          bootbox.hideAll() 
         } 
        }, 
        main: { 
         label: "Ano", 
         className: "btn-primary", 
         callback: function() { 
          $("#confirm-logout").submit(); 
         } 
        } 
       } 
      }); 
     }); 
     .... 
} 

すべてCSSとJSファイルはdjango dev-serverから読み込まれます。それらは静的ディレクトリにあります。

<link rel="icon" href="/static/img/favicon.ico"> 
<link rel="stylesheet" href="/static/css/base_style.css"> 
<link rel="stylesheet" href="/static/bootstrap/css/bootstrap.min.css"> 
<link rel="stylesheet" href="/static/bootstrap/css/bootstrap-theme.min.css"> 
<link rel="stylesheet" href="/static/pizza-master/css/pizza.css"> 
<link rel="stylesheet" href="/static/css/profile_style.css"> 
<script src="/static/scripts/jquery_1_11.min.js"></script> 
<script src="/static/scripts/bootbox.min.js"></script> 
<script src="/static/scripts/jquery.confirm.js"></script> 
<script src="/static/bootstrap/js/bootstrap.min.js"></script> 
<script src="/static/bootstrap/js/npm.js"></script> 
<script src="/static/pizza-master/js/vendor/modernizr.js"></script> 

が最後にスクリーンショットがあります:ここではHTMLのheadの一部だ

PhantomJs background is transparent

Destktop Chrome run server instead test

+0

質問に必要な情報が追加されました。 –

答えて

1

OKは、私は解決策を見つけたんです。問題はPhantomJSにはまったく関連していませんでした。 ChromeDriverはまったく同じように動作します。

問題は、runserverと同じ方法で静的ファイルを提供していないDjangoテストが原因でした。私のために働いたと

ソリューションが実行されます。これは、テストサーバーを

python manage.py collectstatic 

確保あなたのDjangoはセットアップ静的なファイルを持っている場合は、静的なファイルを提供。 Django static files doc

関連する問題