public void WhenIAddThatProductToMyCartWithTheFollowingDetails(Table table) { site_wide_objects site_wide = new site_wide_objects(); quick_view_page quick_view = new quick_view_page(); var dictionary = site_wide_objects.ToDictionary(table); String quantity = dictionary["quantity"]; String size = dictionary["size"]; IWebElement iframeSwitch = driver.FindElement(By.XPath("//iframe[@class='fancybox-iframe']")); driver.SwitchTo().Frame(iframeSwitch.GetAttribute("name")); PageFactory.InitElements(driver, quick_view); Thread.Sleep(1000); IWebElement quantity_option = quick_view.quantity; quantity_option.Clear(); quantity_option.SendKeys(quantity); Thread.Sleep(1000); IWebElement size_dropdown = quick_view.size; var select_element = new SelectElement(size_dropdown); select_element.SelectByText(size); IWebElement add_to_cart_button = quick_view.add_to_cart_button; add_to_cart_button.Click(); }
public void NewWindows() { // зайти в админку Login(); // открыть пункт меню Countries(или страницу http://localhost/litecart/admin/?app=countries&doc=countries) driver.Url = "http://localhost/litecart/admin/?app=countries&doc=countries"; // открыть на редактирование какую-нибудь страну или начать создание новой driver.FindElement(By.LinkText("Add New Country")).Click(); string countriesWindow = driver.CurrentWindowHandle; IList <string> handles = driver.WindowHandles; /* возле некоторых полей есть ссылки с иконкой в виде квадратика со стрелкой -- * они ведут на внешние страницы и открываются в новом окне, именно это и нужно проверить. * Конечно, можно просто убедиться в том, что у ссылки есть атрибут target = "_blank". */ ReadOnlyCollection <IWebElement> externalLinks = driver.FindElements(By.CssSelector(".fa-external-link")); // повторить эти действия для всех таких ссылок. for (int i = 0; i < externalLinks.Count; i++) { IWebElement externalLink = externalLinks[i]; // Но в этом упражнении требуется именно кликнуть по ссылке, чтобы она открылась в новом окне, externalLink.Click(); // новое окно открывается не мгновенно, поэтому требуется ожидание открытия окна. Func <IWebDriver, string> ThereIsWindowOtherThan = new Func <IWebDriver, string>((IWebDriver Web) => { IList <string> curHandles = driver.WindowHandles.ToList(); for (int j = 0; j < handles.Count; j++) { curHandles.Remove(handles[j]); } if (curHandles.Count != 0) { return(curHandles[0]); } return(null); }); WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); string externalWindow = wait.Until(ThereIsWindowOtherThan); // потом переключиться в новое окно, driver.SwitchTo().Window(externalWindow); //закрыть его, driver.Close(); //вернуться обратно driver.SwitchTo().Window(countriesWindow); } }
// 경고창과 클릭 예외 처리가 된 클릭 이벤트 public void Click(EventFiringWebDriver pDriver, By by) { while (true) { try { pDriver.FindElement(by).Click(); break; } catch (UnhandledAlertException e) { Console.WriteLine($": '{e}'"); try { IAlert alert = pDriver.SwitchTo().Alert(); Console.WriteLine(alert.Text); alert.Dismiss(); } catch (Exception) { //Console.WriteLine($": '{e}'"); } } catch (ElementClickInterceptedException e) { Console.WriteLine($": '{e}'"); } catch (Exception e) { Console.WriteLine($": '{e}'"); } Thread.Sleep(1000); } }
public void TheBaiduSwitchWindowTest() { //IWebDriver driver = new ChromeDriver();//谷歌浏览器 IWebDriver driver = new EventFiringWebDriver(new ChromeDriver()); driver.Navigate().GoToUrl("http://tieba.baidu.com/f/search/adv"); //找到注册元素 IWebElement register = driver.FindElement(By.CssSelector("#com_userbar>ul>li:nth-child(5)>div>a")); register.Click(); //显示所有标识 IList <string> listHand = driver.WindowHandles;//拿到所有标识 //切换到注册窗口再输入12345 driver.SwitchTo().Window(listHand[1]); driver.FindElement(By.Name("userName")).SendKeys("12345"); }
public static void SelecionarBrowser(int index) { driver.SwitchTo().Window(driver.WindowHandles[index]); }