Ошибка, отображаемая как «org.openqa.selenium.JavascriptException: ошибка JavaScript: невозможно прочитать свойство 'setAttribute' из null" - PullRequest
0 голосов
/ 09 июля 2019

плохо знаком с огурцом, выполняя его вместе с селеном. Я написал файл функции, в котором пользователь сначала заходит на домашнюю страницу, затем нажимает на ссылку «Регистрация» и проверяет, что указанные поля отображаются .:-

Определение шага для того же также было написано. Но когда я выполняю файл функции.

Отображается ошибка, т. Е. "Org.openqa.selenium.JavascriptException: ошибка JavaScript: невозможно прочитать свойство 'setAttribute' из null".

Может ли кто-нибудь помочь решить эту проблему.

Сценарий с моим файлом функций : -

        @TC2
        Scenario: Verify the Register link provided on Home Page

           Given user is on  HomePage
           When user clicks on register link
           Then user should be able to view following <fields> such as

           |fields|
           |First Name|
           |Last Name|
           |Address|
           |City|
           |State|
           |Zip code|
           |Phone|
           |SSN|
           |Username|
           |Password|
           |Confirm| 

Файл определения шага выглядит следующим образом: =

 @When ("^user clicks on register link$")
            public void click_register()
            {

                 WebElement Register_link=driver.findElement(By.xpath("//a[contains(text(),'Register')]"));
                 Register_link.click();
            }


            @FindBy(xpath="//table[@class='form2']/tbody/tr/td[2]/input[@id='customer.firstName']")
            private WebElement first_name;

            @FindBy(xpath="//table[@class='form2']/tbody/tr/td[2]/input[@id='customer.lastName']")
            private WebElement last_name;

            @FindBy(xpath="//table[@class='form2']/tbody/tr/td[2]/input[@id='customer.address.street']")
            private WebElement Address;

            @FindBy(xpath="//table[@class='form2']/tbody/tr/td[2]/input[@id='customer.address.city']")
            private WebElement city;

            @FindBy(xpath="//table[@class='form2']/tbody/tr/td[2]/input[@id='customer.address.state']")
            private WebElement state;

            @FindBy(xpath="//table[@class='form2']/tbody/tr/td[2]/input[@id='customer.address.zipCode']")
            private WebElement zip;

            @FindBy(xpath="//table[@class='form2']/tbody/tr/td[2]/input[@id='customer.phoneNumber']")
            private WebElement phone;

            @FindBy(xpath="//table[@class='form2']/tbody/tr/td[2]/input[@id='customer.ssn']")
            private WebElement SSN;

            @FindBy(xpath="//table[@class='form2']/tbody/tr/td[2]/input[@id='customer.username']")
            private WebElement Username;

            @FindBy(xpath="//table[@class='form2']/tbody/tr/td[2]/input[@id='customer.password']")
            private WebElement password;

            @FindBy(xpath="//table[@class='form2']/tbody/tr/td[2]/input[@id='repeatedPassword']")
            private WebElement repeat_pass;

            @Then ("^user should be able to view  <fields> such as$")
            public void verify_fields(DataTable testData)
            {
                List<String> all_fields=testData.asList(String.class);  

                for(String fields_links:all_fields)
                {

                    JavascriptExecutor js=(JavascriptExecutor)driver;
                    js.executeScript("arguments[0].setAttribute('style', arguments[1]);",first_name, "color: blue; border: 2px solid Magenta;");



                    js.executeScript("arguments[0].setAttribute('style', arguments[1]);",last_name, "color: blue; border: 2px solid Magenta;");


                    js.executeScript("arguments[0].setAttribute('style', arguments[1]);",Address, "color: blue; border: 2px solid Magenta;");

                    js.executeScript("arguments[0].setAttribute('style', arguments[1]);",city, "color: blue; border: 2px solid Magenta;");

js.executeScript("arguments[0].setAttribute('style', arguments[1]);",state, "color: blue; border: 2px solid Magenta;");


                    js.executeScript("arguments[0].setAttribute('style', arguments[1]);",zip, "color: blue; border: 2px solid Magenta;");


                    js.executeScript("arguments[0].setAttribute('style', arguments[1]);",phone, "color: blue; border: 2px solid Magenta;");



                    js.executeScript("arguments[0].setAttribute('style', arguments[1]);",SSN, "color: blue; border: 2px solid Magenta;");


                    js.executeScript("arguments[0].setAttribute('style', arguments[1]);",phone, "color: blue; border: 2px solid Magenta;");



                    js.executeScript("arguments[0].setAttribute('style', arguments[1]);",Username, "color: blue; border: 2px solid Magenta;");


                    js.executeScript("arguments[0].setAttribute('style', arguments[1]);",password, "color: blue; border: 2px solid Magenta;");


                    js.executeScript("arguments[0].setAttribute('style', arguments[1]);",repeat_pass, "color: blue; border: 2px solid Magenta;");

                }

JavascriptExecutor используется здесь, чтобы выделить элементы, чтобы убедиться, что они существуют. Это сообщение об ошибке - «org.openqa.selenium.JavascriptException: javascript error: Cannot read property 'setAttribute' of null». Он заявляет, что не может читать никакое свойство. Здесь не определено ни одного свойства.
Пожалуйста, помогите мне решить этот вопрос. Не удалось найти причину этой проблемы.

1 Ответ

0 голосов
/ 09 июля 2019

попробуйте это для выделения элементов,

js.executeScript("arguments[0].setAttribute('style', 'color: blue; border: 2px solid Magenta;');", last_name); 
...