Нажатие кнопки поиска Google с селеном - PullRequest
1 голос
/ 03 июля 2019

Я изучаю селен, но не могу нажать кнопку поиска Google с ним. Что я пытаюсь:

        IWebDriver driver = new ChromeDriver();
        driver.Url = "https://google.com";
        IWebElement searchBar = driver.FindElement(By.Name("q"));
        searchBar.SendKeys("Hello world!");
        IWebElement searchButton = driver.FindElement(By.Name("btnK"));
        searchButton.Click();

Правильно заполняет строку поиска hello world, но исключение при нажатии на кнопку: OpenQA.Selenium.ElementNotInteractableException: 'элемент не взаимодействует

Ответы [ 3 ]

0 голосов
/ 03 июля 2019

Самым простым будет вызов метода IWebElement.Submit () , например:

searchBar.Submit();

в дальнейшем я бы порекомендовал использовать Явное ожидание , чтобы вы могли убедиться, что элемент присутствует в DOM и доступен для нажатия, используя WebDriverWait и ExpectedConditions комбинация классов:

driver.Navigate().GoToUrl("http://google.com");
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
IWebElement searchBar = wait.Until(ExpectedConditions.ElementToBeClickable(By.Name("q")));
searchBar.SendKeys("Hello world!");
IWebElement searchButton = wait.Until(ExpectedConditions.ElementToBeClickable(By.Name("btnK")));
searchButton.Click();
driver.Quit();

Дополнительная информация: Как использовать Selenium для тестирования веб-приложений с использованием технологии AJAX

0 голосов
/ 03 июля 2019

Попробуйте использовать xpath

это сработало для меня

        string searchBox="/html/body/div/div[3]/form/div[2]/div/div[1]/div/div[1]/input";
        string searchBtn="/html/body/div/div[3]/form/div[2]/div/div[3]/center/input[1]";
        IWebDriver driver = new ChromeDriver();
        driver.Url = "https://google.com";
        IWebElement searchBar = driver.FindElement(By.Path(searchBox));
        searchBar.SendKeys("Hello world!");
        IWebElement searchButton = driver.FindElement(By.XPath(searchBtn));
        searchButton.Click();

Позвольте мне знать, если xpath не работает для вас

0 голосов
/ 03 июля 2019

Когда вы учитесь, я думаю, что это хорошее упражнение для вас, где вы можете использовать findElements и затем взаимодействовать с элементами списка.

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

Вы должны использовать findElements, а не findElement, поскольку есть 2 элемента с одинаковым точным значением атрибута name.

 driver.FindElements(By.Name("btnK")) 

Это даст вам список элементов.Затем проверьте размер, который будет равен 2. Теперь нажмите на 2-й элемент.

Или вы можете просто использовать JavaScript, чтобы нажать на searchButton из исходного сообщения.

...