#selenium #webdriver
#селен #webdriver
Вопрос:
Я новичок в Selenium и C #.
Я знаю, что этот код не является оптимальным, можете ли вы посоветовать, как я могу писать такие вещи быстрее и короче?
По сути, я ищу кнопку, ссылка на которую содержит «addNewProduct».
var addButtons = _driver.FindElements(By.LinkText("Add"));
IWebElement addNewProductButton = null;
foreach (IWebElement button in addButtons) {
if (button.GetAttribute("href").Contains("addNewProduct")){
addNewProductButton = button;
break;
}
}
addNewProductButton.Click();
Ответ №1:
Используйте XPath или CSS-селектор.
XPath
IWebElement btnAdd = _driver.FindElement(By.XPath("//a[contains(@href, 'addNewProduct')]"));
Селектор CSS
IWebElement btnAdd = _driver.FindElement(By.CssSelector("a[href*='addNewProduct']"));
Я рекомендую CSS Selector, поскольку они быстрее, а синтаксис более лаконичный.
Комментарии:
1. Большое вам спасибо, не могли бы вы посоветовать, где я могу узнать, как создавать эти операторы CCS Selector и Xpath?
2. Первые результаты поиска в Google «Учебное пособие по XPath» и «Учебное пособие по выбору CSS» довольно хороши. Затем используйте что-то вроде Firebug (с FireFinder для XPath), чтобы протестировать ваши запросы, прежде чем использовать их в Selenium