Используя Selenium с Java для автоматизации, как сделать объектно-ориентированную часть сценария «действенной?» - PullRequest
0 голосов
/ 21 октября 2019

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

Так что я хочу начать спросто делаю одну строку сценария таким образом, и в конце концов я сделаю больше. Вначале это может показаться большим количеством кода, чтобы сделать это, но вот строка:

driver.findElement(By.id("OrganizationName")).sendKeys("The Rolling Stones");

Вот что у меня так далеко:

ncformPage1 skifootz = new ncformPage1("Rolling Stones");
skifootz.getOrgname();

Это та часть, которая есть в сценарии. Вот класс, который я написал:

public class ncformPage1 {
    private String orgName;
    public ncformPage1(String on) {
        orgName = on;
    }

    public String getOrgname() { return "driver.findElement(By.id(\"OrganizationName\")).sendKeys(\""
    + orgName + "\");";
    }
}

Поэтому, когда я запускаю его, он проходит сразу за этим элементом organizationName и оставляет его пустым, выполняет все остальные элементы, а затем завершается ошибкой, поскольку имя организации является обязательным полем,Поэтому я добавил этот фрагмент кода, чтобы посмотреть, что он выводит на консоль:

System.out.println( skifootz.getOrgname());

Конечно, он выводит

driver.findElement(By.id("OrganizationName")).sendKeys("Rolling Stones");

Что именно то, что я хочу вернуть. (Я думаю, что последняя точка с запятой в этом случае посторонняя, но, по крайней мере, она вернула то, что я хотел!) Но это не выполняется. Я пробовал все виды вещей, чтобы заставить его исполниться, например, удаление драйвера из возвращаемого и добавление его здесь вместо этого:

driver.skifootz.getOrgname();

но это дает мне скифутц не может бытьразрешено или не является полем. Я попробовал это:

String a = skifootz.getOrgname();
driver.a();

Но это только что подчеркнул, что метод a () не определен для типа Webdriver. Тогда я изменил String a на Webdriver a:

WebDriver a = skifootz.getOrgname();
driver.a();

Но теперь skifootz.getOrgname ();подчеркнуто "несоответствие типов: невозможно преобразовать из String в WebDriver."Я возился с этим уже несколько дней, и не приблизился. Может быть, это простое решение, но если я смогу просто заставить эту часть работать, то, возможно, я смогу перейти к следующему этапу? Этот n00b заранее благодарит всех за любую помощь.

1 Ответ

0 голосов
/ 21 октября 2019

Метод возвращает тип String, и вы ожидаете, что он будет действовать как объект драйвера. Эта часть неверна.

Я думаю, вы можете написать методы, которые будут больше похожи на

public WebElement getOrgname(WebDriver driver, String OrganizationName) { 
    return driver.findElement(By.id(OrganizationName));
}

WebElement a = skifootz.getOrgname(driver);
a.sendKeys("Rolling Stones");

ИЛИ

public void TypeText(WebDriver driver, String OrganizationName, String TextToType) { 
    driver.findElement(By.id(OrganizationName)).sendKeys(TextToType);;
}

, в вашем контексте это, вероятно, должно работать.

ncformPage1 skifootz = new ncformPage1();
skifootz.getOrgname(skifootz.driver, "OrganizationName");
skifootz.sendKeys("Rolling Stones");


public class ncformPage1 {
    private String orgName;
    public WebDriver driver = new ChromeDriver();  // I'm assuming this part.
    public ncformPage1(String on) {
        orgName = on;
   }

    public WebElement getOrgname(WebDriver driver, String OrganizationName) { 
        return driver.findElement(By.id(OrganizationName));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...