Как исправить рендеринг полной HTML-страницы с помощью Selenium с помощью VNC - PullRequest
0 голосов
/ 24 мая 2019

Я использую для внешнего интерфейса VueJS для стилизации моей веб-страницы и Selenium для тестирования моего внешнего интерфейса.Для бэк-энда я использую Django.Все это в моем докере доступно.У меня есть несколько компонентов VueJS с именами WJLogin, WJHeader и WJFooter по следующему URL: 'http://backend:8001/account/login'. Все элементы этого URL действительно загружаются, кроме элементов всех компонентов VueJS.В этом вопросе я отдаю предпочтение WJLogin, потому что, если компонент загружается, автоматически загружается и другой (если все одинаково).

Я попробовал следующие варианты:

  • Печать всего исходного кода через эту команду print(driver.page_source) Этот результат показывает, что WJLogin не загружен

  • Перезапуск всего докера

Код из моего тестового файла tests_frontend.py

class AccountTestCase(unittest.TestCase):

    def setUp(self):
        caps = {'browserName': 'chrome'}
        url = 'http://selenium_hub:4444/wd/hub'

        self.browser = webdriver.Remote(
            command_executor=url,
            desired_capabilities=caps
        )

    def tearDown(self):
        self.browser.quit()

    def test_login(self):
        driver = self.browser
        driver.get("http://backend:8001/account/login")
        print(driver.page_source)

Код из моего файла VueJS WJLogin.vue (этомой компонент)

<template>
    <div>
        <v-app>
            <WJHeader :username="username"></WJHeader> 
                <v-layout align-center justify-center row>                  
                    <v-flex lg5>
                        <v-container white>
                            <form method="post" action="/login_view">
                                <h4>Login into <span class="primary--text"> Phoenix </span></h4>
                                <input name="csrfmiddlewaretoken" :value="csrf" type="hidden">
                                <v-text-field id="loginUsername" name="username" label="Username" required> </v-text-field>

                                <v-text-field
                                :append-icon="showPassword ? 'visibility' : 'visibility_off'"
                                :rules="[passwordRules.required]"
                                :type="showPassword ? 'text' : 'password'"
                                label="Password"
                                name="password"
                                id="loginPassword"
                                @click:append="showPassword = !showPassword">
                                </v-text-field>

                                <v-btn id="loginSubmit" color="success" type="submit"> Login </v-btn>
                                <v-btn color="error" type="reset"> Reset </v-btn>
                            </form>
                        </v-container>
                    </v-flex>

                </v-layout>
            <WJFooter></WJFooter>
        </v-app>
    </div>
</template>

Этот снимок экрана показывает вывод

enter image description here

Этот снимок экрана показывает исходный код (Ctrl+U)

enter image description here

На этом снимке экрана показаны элементы (F12 -> inspector)

enter image description here

Когда яперейдите на мою веб-страницу без селена Я вижу WJLogin без проблем .

Я ожидаю, что Selenium должен загрузить компонент WJLogin также, как и в обычном режиме (без селена и в обычном браузере Chrome / Firefox)

Примечание: требуется10 репутации за публикацию изображения в StackOverflow

...