Навігація: Історія і розташування
Раніше ми розглядали перехід до сторінки за допомогою команди “GET” (driver.get (“http://www.example.com”)) Як ви бачили, WebDriver має ряд менших інтерфейсів, і навігація стає корисною справою. Тому що завантаження сторінки – це основна вимога, метод, що робить це вбудований в інтерфейс WebDriver, і є простим синонімом до:
driver.navigate().to("http://www.example.com");
driver.navigate.to "http://www.example.com"
driver.get("http://www.example.com") # python doesn't have driver.navigate
Повторимо ще раз: “navigate().to()” і “get()” роблять те ж саме. Просто один з них набагато простіше вводити, ніж інший.
“Переміщення” інтерфейсом також має на увазі можливість рухатися вперед і назад в історії вашого браузера:
driver.navigate().forward(); driver.navigate().back();
driver.navigate.forward driver.navigate.back
driver.forward() driver.back()
Майте на увазі, що ця функція повністю залежить від вашого браузера. Є можливість, що щось несподіване станеться, коли ви визиваєте ці методи, якщо ви звикли до поведінки одного браузера, а перейшли до іншого.
Cookies
Перш, ніж ми почнемо наступні кроки, ви можете бути зацікавлені в розумінні того, як використовувати cookies. Насамперед, ви повинні бути впевнены, що cookies будуть дійсними. Якщо ви намагаєтеся встановити cookies, перш ніж почати взаємодію з сайтом і стартова сторінка велика або потрібен час, щоб завантажити її, альтернативою буде знайти меншу сторінку на сайті – це, як правило, сторінка 404 (http://example.com/some404page)
// Go to the correct domain driver.get("http://www.example.com"); // Now set the cookie. This one's valid for the entire domain Cookie cookie = new Cookie("key", "value"); driver.manage().addCookie(cookie); // And now output all the available cookies for the current URL SetallCookies = driver.manage().getCookies(); for (Cookie loadedCookie : allCookies) { System.out.println(String.format("%s -> %s", loadedCookie.getName(), loadedCookie.getValue())); } // You can delete cookies in 3 ways // By name driver.manage().deleteCookieNamed("CookieName"); // By Cookie driver.manage().deleteCookie(loadedCookie); // Or all of them driver.manage().deleteAllCookies();
# Go to the correct domain driver.get("http://www.example.com") # Now set the cookie. Here's one for the entire domain # the cookie name here is 'key' and its value is 'value' driver.add_cookie({'name':'key', 'value':'value', 'path':'/'}) # additional keys that can be passed in are: # 'domain' -> String, # 'secure' -> Boolean, # 'expiry' -> Milliseconds since the Epoch it should expire. # And now output all the available cookies for the current URL for cookie in driver.get_cookies(): print "%s -> %s" % (cookie['name'], cookie['value']) # You can delete cookies in 2 ways # By name driver.delete_cookie("CookieName") # Or all of them driver.delete_all_cookies()
# Go to the correct domain driver.get "http://www.example.com" # Now set the cookie. Here's one for the entire domain # the cookie name here is 'key' and its value is 'value' driver.manage.add_cookie(:name => 'key', :value => 'value') # additional keys that can be passed in are: # :path => String, :secure -> Boolean, :expires -> Time, DateTime, or seconds since epoch # And now output all the available cookies for the current URL driver.manage.all_cookies.each { |cookie| puts "#{cookie[:name]} => #{cookie[:value]}" } # You can delete cookies in 2 ways # By name driver.manage.delete_cookie "CookieName" # Or all of them driver.manage.delete_all_cookies
Зміна агента користувача
Це легко зробити з драйвером Firefox, про який ми поговоримо в наступній статті.
FirefoxProfile profile = new FirefoxProfile(); profile.addAdditionalPreference("general.useragent.override", "some UA string"); WebDriver driver = new FirefoxDriver(profile);
profile = Selenium::WebDriver::Firefox::Profile.new profile['general.useragent.override'] = "some UA string" driver = Selenium::WebDriver.for :firefox, :profile => profile
profile = webdriver.FirefoxProfile() profile.set_preference("general.useragent.override", "some UA string") driver = webdriver.Firefox(profile)
Перетягування елементів
Ось приклад використання класу дій для виконання перетягування. Власні події повинні бути включені.
WebElement element = driver.findElement(By.name("source")); WebElement target = driver.findElement(By.name("target")); (new Actions(driver)).dragAndDrop(element, target).perform();
element = driver.find_element(:name => 'source') target = driver.find_element(:name => 'target') driver.action.drag_and_drop(element, target).perform
from selenium.webdriver.common.action_chains import ActionChains element = driver.find_element_by_name("source") target = driver.find_element_by_name("target") ActionChains(driver).drag_and_drop(element, target).perform()