Не удается найти новые элементы после добавления javascript с помощью веб-драйвера chrome - PullRequest
0 голосов
/ 05 марта 2020

Вот простое HTML, сгенерированное из c# do tnet core asp страниц, приложения. Я пытаюсь получить количество полей ввода из div colorList с помощью теста веб-драйвера. Начальный счет двух работ, но как только я имитирую нажатие кнопки с надписью «+», я все равно получаю только два, где я ожидал получить три. Я пробовал все виды различных ожиданий, как явных, так и неявных, но не могу заставить их работать.

<!DOCTYPE html>
<html>
<head>
    <title>Home page - SeleniumWebTest</title>
</head>
<body>
    <div class="container body-content">
        <body>
        <form method="post" id="Form" action="/?handler=saveall">
            <div><h4>Colors</h4><button type="button" onclick="CreateColor();" value="create" class="btn-sm">+</button></div>
            <div class="indent" id="colorlist">
                    <input value="Red" type="text" id="Colors" name="Colors" /><br />
                    <input value="Blue" type="text" id="Colors" name="Colors" /><br />
            </div>
            <br />
            <div>
                <h1>More Stuff</h1>
            </div>
            <br />
            <button type="submit" value="SaveAll" class="btn btn-primary">Save All</button>
        <input name="__RequestVerificationToken" type="hidden" value="CfDJ8Ps9gVily6NMr7L9g0lJf0cQzaqUzEq26TUrHCT4rH1GQIY0QLmjjc6cnQBE8aBvQlWdXAQZ2ub08pm2yIMWkUICO51XkWH6d11pf7y3pr3HwqRgBkiFdpaHSFYQsJsWdLba01RGCL8yYsUad9Vn2JQ" /></form>
</body>


<script type="text/javascript">
    function CreateColor() {

        var form = document.getElementById("colorlist");
        var input = document.createElement("input");
        input.type = "text";
        input.id = "ColorId";
        input.name = "ColorName";
        form.appendChild(input);
        linebreak = document.createElement("br");
        form.appendChild(linebreak);
    };
</script>
    </div>
</body>
</html>

Вот мой тест

        [Fact]
        public void ColorTest()
        {
            var _driver = new ChromeDriver();

            _driver.Navigate().GoToUrl("https://localhost:44394/");
            Assert.Equal("Home page - SeleniumWebTest", _driver.Title);

            var colorInputs = _driver.FindElements(By.Id("Colors"));
            Assert.Equal(2, colorInputs.Count);

            var plusButton = _driver.FindElement(By.XPath("//button[text()='+']"));
            plusButton.Click();

            var colorInputs2 = _driver.FindElements(By.Id("Colors"));
            Assert.Equal(colorInputs.Count+1,colorInputs2.Count); // <-- Fails

            _driver.Close();
            _driver.Quit();
        }

1 Ответ

0 голосов
/ 05 марта 2020

Yikes, после создания вопроса вижу проблему. Идентификаторы для новых элементов генерировались по-разному для бритвенных страниц по сравнению с javascript.

...