Если вы согласны с Saurabh Gaur в этом топике - то вы оба по прежнему неправы, и не понимаете механики до конца.
Ну так напишите разницу между всеми теми способами что вы указали в Edit fiddle - JSFiddle - Code Playground Это будет гораздо полезнее для всех, чем убеждать меня в том что я не прав )
P.S.: Я не отрицаю того что я не до конца знаю принцип работы метода text()
У меня небольшой вопрос по коду:
"driver" подчёркивается красным и сообщает об ошибке: The name ‘driver’ does not exist in the current context
Как это можно исправить?
Значит у вас не определен driver.
Где вы его инстанцируете?
Ошибка выглядит вот так.
см. скирн Screenshot by Lightshot
Я только осваиваю C#, поэтому не совсем понимаю, что это значит.
У вас сперва должен быть инстанцирован вебдрайвер, примерно так:
IWebDriver driver = new FirefoxDriver();
Не делал это на C#, но суть везде одинаковая.
у вас этот объект называется Browser
Сделал следующим образом
см. скрин Screenshot by Lightshot
Выдаёт ошибку: “Cannot implicitly convert type ‘System.Collections.ObjectModel.ReadOnlyCollection<OpenQA.Selenium.IWebElement>’ to ‘System.Collections.Generic.List<OpenQA.Selenium.IWebElement>’”
IWebDriver Browser;
Это вы объявили переменную. А что вы сней дальше делали?
Должно быть Browser = new FirefoxDriver();
например.
И лучше пишите имена переменных с маленькой буквы.
Browser используется следующим образом
private void button1_Click(object sender, EventArgs e)
{
OpenQA.Selenium.Chrome.ChromeOptions co = new OpenQA.Selenium.Chrome.ChromeOptions();
co.BinaryLocation = @"c:\soft\1_1\GoogleChromePortable_1.exe";
co.AddArguments(@"user-data-dir=c:\soft\Data\profile\");
Browser = new OpenQA.Selenium.Chrome.ChromeDriver(co);
Browser.Navigate().GoToUrl(comboBox1.Text); // переходим на сайт
IWebElement SearchInput = Browser.FindElement( By.Id(comboBox2.Text) ); // элемент для поиска на странице
SearchInput.SendKeys(textBox2.Text + OpenQA.Selenium.Keys.Enter); // текст для ввода в поисковик + нажатие Enter
}
Я предполагаю пока использовать Chrome.
Как данная строка будет выглядеть для Chrome?
PS
Прошу пощения, если вопросы совсем элементарные.
Почитал справочники, но в упор не могу понять в чём проблема.
Проблема глобальная.
Если коротко, то вы инстанцируете драйвер внутри метода, который кликает на кнопку.
Соответственно область его видимости - только этот метод.
В связи с этим я настоятельно рекомендую почитать про #PageObject
Чтобы было понимание архитектуры фреймворка. Нельзя фундамент ставить в дверной проем, а вы это делаете
И пока мы не углубились в дебри - почему C# выбрали для обучения? По-моему это самый сложный вариант для новичка из возможных.
А вообще на официальной странице Селениума все базовые примеры есть: The Selenium Browser Automation Project | Selenium
ошибка с приведением типов решается просто объявлением типа явно
в строке 378
ReadOnlyCollection<IWebElement>Element = Browser.FindElements(By....)
…по-моему это самый сложный вариант для новичка из возможных.
хм…?? погуглите например темы
- C# is more advanced than Java
- C# is easier than Java
и удивитесь
И так ошибка
The type or namespace name ‘ReadOnlyCollection<>’ could not be found (are you missing a using directive or an
assembly reference?)
Operator ‘<’ cannot be applied to operands of type ‘int’ and ‘method group’
Вроде решил.
Прописал
using System.Collections.ObjectModel;
Не удивлюсь. Я про C# в связке с вебдрайвером. Гораздо меньше учебных материалов и толковых примеров в сети, чем по той же Джаве или Питону. Человек еще переменные не научился объявлять толком, а ему уже приведением типов заниматься нужно Только не принимайте близко к сердцу.
И всё таки: как сделать, чтобы собирал в список элементы не взирая на регистр искомого текста?
Скрин поисковой выдачи
1. Для данного кода: XPath(“//h3//a[contains(lower-case(.), ‘программа на c#’)]”)
ReadOnlyCollection<IWebElement> Element = Browser.FindElements(By.XPath("//h3//a[contains(lower-case(.), 'программа на c#')]"));
выдаёт ошибку
Unable to locate an element with the xpath expression //h3//a[contains(lower-case(.), ‘программа на c#’)] because of the following error:
Failed to execute ‘evaluate’ on ‘Document’: The string ‘//h3//a[contains(lower-case(.), ‘программа на c#’)]’ is not a valid XPath expression.
2. Для данного кода: XPath(“//h3//a[contains(text(), ‘программа на c#’)]”)
скрин Screenshot by Lightshot
вообще никаких реакций
PS
))
Всё ок. Спасибо за информацию… А то начитался… голова кругом… не знаешь с чего начать. Ну раз начал с С#, попробую довести до логического конца
приведите url сайта или сделайте фрагмент в fiddler - честно говоря я по прежнему сомневаюсь что когда вы используете xpath
- получится и что надежнее в C# выбирать но долго объяснять почему…
А покажите полностьтю весь код.