Робота з Webdriver (ч.4, робота з історією, cookies та перетаскуванням)

Навігація: Історія і розташування

Раніше ми розглядали перехід до сторінки за допомогою команди “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
Set allCookies = 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()
We #StandWithUkraine.
Learn how you can help too!

#Stand­With­Ukraine

We don't know how long the war will last. But what we do know is that we can't stand aside and watch.

The fastest way you can help too is to support Ukraine financially. The National Bank of Ukraine (NBU) has opened a multi-currency account for that purpose. Learn more

This account accepts donations in US, Canadian and Australian dollars, euros, British pounds, Swiss francs, yuan and yen.

UA823000010000032302338301027

Also accepting cryptocurrency donations – the fastest way to help. Learn more

BTC – 357a3So9CbsNfBBgFYACGvxxS6tMaDoa1P

ETH, USDT (ERC-20) – 0x165CD37b4C644C2921454429E7F9358d18A45e14

Spread the word!