Сделайте код селена с большим количеством XPath-ов более читабельным - PullRequest
0 голосов
/ 10 января 2019

Я заметил, что когда я использую веб-драйвер селена для взаимодействия с элементами на веб-странице, мой код становится недоступным для чтения, потому что я использую много XPath-ов, чтобы найти эти элементы. Например:

driver.FindElement(By.XPath("//div[@class='login']//a[@href='#']"), Globals.TIMEOUT).Click();
var loginField = driver.FindElement(By.XPath("//div[@id='login_box']//input[@name='login_name']"));
jdriver.ExecuteScript("arguments[0].setAttribute('value', '" + login + "')", loginField);
var passwordField = driver.FindElement(By.XPath("//div[@id='login_box']//input[@name='login_password']"));
jdriver.ExecuteScript("arguments[0].setAttribute('value', '" + password + "')", passwordField);
driver.FindElement(By.XPath("//div[@id='login_box']//input[@type='submit']")).Click();
driver.FindElement(By.XPath("//div[@class='nameuser']"), Globals.TIMEOUT);
Я думал, что могу поместить значения XPath в константы, но очень полезно видеть фактический XPath элемента при чтении кода. Но с другой стороны, когда XPath какого-либо объекта изменяется, я должен изменить его во всех местах, где он используется. Так что является лучшим решением для этой проблемы?

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Создать объектный файл страницы.

Например, если вы используете xPath, например, "//div[@id='login_box']//input[@type='submit']" много, в объектном файле страницы укажите:

var loginSubmit = "//div[@id='login_box']//input[@type='submit']"

Затем в ваш основной файл импортируйте файл объекта страницы:

using myPageObjectFile

driver.FindElement(By.XPath(myPageObjectFile.loginSubmit));

Мой C # не очень хорош, так что может быть не совсем так. Но что-то на этот счет должно сработать.

Таким образом, когда изменяется xPath, вам нужно только настроить его в объектном файле страницы.

0 голосов
/ 10 января 2019

Использование Selenium Объектная модель страницы с использованием Page factory . Помогает поддерживать чистый код и улучшает читабельность кода.

...