#c# #selenium #automation #webdriver
#c# #selenium #автоматизация #webdriver
Вопрос:
Я использую Visual Studio 2010 для написания автоматических тестов Selenium 2 Webdriver на C #. Я искал повсюду примеры использования переменных в качестве селекторов и не нашел ничего, что, похоже, работало бы. Единственный найденный мной пример переменной, используемой в качестве селектора, содержал переменную с префиксом $ и заключенную в {}. Пример того, что я пытаюсь сделать, приведен ниже:
string surveyName = "Selenium test survey";
Driver.FindElement(By.CssSelector("tr[svd='${surveyName}']"))
Я получаю сообщение об ошибке:
OpenQA.Selenium.WebDriverException : Unexpected error. Unable to find element using css: tr[svd='${surveyName}']
Если я «жестко запрограммирую» селектор следующим образом:
Driver.FindElement(By.CssSelector("tr[svd='Selenium test survey']"))
он находит элемент.
svd является атрибутом элемента tr. Я пытаюсь выбрать строку в таблице по значению этого атрибута. Текст будет отличаться для каждого теста и поэтому должен быть переменной.
Я пробовал выразить переменную несколькими различными способами, но мне не повезло заставить это работать. Любая помощь была бы высоко оценена.
Спасибо.
Ответ №1:
string surveyName = "Selenium test survey";
Driver.FindElement(By.CssSelector(String.Format("tr[svd='{0}']", surveyName))
будет делать то, что вы хотите. Это c #, поэтому, когда требуется строка, вы можете делать все, что угодно, чтобы получить эту строку
Комментарии:
1. Отличный вопрос … у меня были те же проблемы, и ваш ответ мне очень помог, @Caspar. Однако у меня есть один вопрос. Если я хочу выбрать идентификатор элемента ввода и этот идентификатор
Mileage_departmentForm_16
я знаю, что могу просто использовать(By.CssSelector("input[id-'Mileage_departmentForm_16']"))
, но есть ли способ, которым я мог бы сделать что-то вроде выбора идентификатора, который начинается с «Mileage»? Спасибо!2. О, вау, я чувствую себя глупо … только что понял это. Вы должны использовать
(By.CssSelector("input[id^='Mileage_departmentForm_16']"))
. Я полагаю, что все другие типы выбора также работают (начинается с, заканчивается, имеет и т.д.).