webdriverio/website/i18n/pl/docusaurus-plugin-content-docs/current/api/Browser.md
Christian Bromann ccfe70e3b9
(docs): Docusaurus v3 update (#11629)
* (docs): Docusaurus v3 update

* transform scripts to TS
2023-11-08 14:48:46 -08:00

10 KiB

id title
browser Obiekt przeglądrki (The Browser Object)

Dziedziczy: EventEmitter

Obiekt przeglądarki (browser object) to instancja sesji, której używasz do sterowania przeglądarką albo urządzeniem mobilnym. Jeśli używasz test runnera WDIO, możesz uzyskać dostęp do instancji WebDrivera za pośrednictwem globalnego obiektu przeglądarki browser, sterownika driver, lub możesz go zaimportować za pomocą @wdio/globals. Jeśli używasz WebdriverIO w trybie autonomicznym (standalone), obiekt przeglądarki jest zwracany przez metodę remote.

Sesja jest inicjowana przez test runner. To samo dotyczy zakończenia sesji. Odbywa się to również w procesie test runnera.

Właściwości

Obiekt przeglądarki (browser) posiada następujące właściwości:

Nazwa Typ Szczegóły
capabilities Object Przypisane możliwości (capabilities) ze zdalnego serwera.
Przykład:
{
acceptInsecureCerts: false,
browserName: 'chrome',
browserVersion: '105.0.5195.125',
chrome: {
chromedriverVersion: '105.0.5195.52',
userDataDir: '/var/folders/3_/pzc_f56j15vbd9z3r0j050sh0000gn/T/.com.google.Chrome.76HD3S'
},
'goog:chromeOptions': { debuggerAddress: 'localhost:64679' },
networkConnectionEnabled: false,
pageLoadStrategy: 'normal',
platformName: 'mac os x',
proxy: {},
setWindowRect: true,
strictFileInteractability: false,
timeouts: { implicit: 0, pageLoad: 300000, script: 30000 },
unhandledPromptBehavior: 'dismiss and notify',
'webauthn:extension:credBlob': true,
'webauthn:extension:largeBlob': true,
'webauthn:virtualAuthenticators': true
}
requestedCapabilities Object Możliwości (capabilities) żądane od zdalnego serwera.
Przykład:
{ browserName: 'chrome' }
sessionId String Identyfikator sesji (session id) przypisany ze zdalnego serwera.
options Object Opcje (options) WebdriverIO w zależności od sposobu utworzenia obiektu przeglądarki. Zobacz więcej w sekcji typy konfiguracji.
commandList String[] Lista poleceń należących do instancji przeglądarki
isMobile Boolean Oznaczenie sesji mobilnej. Zobacz więcej w sekcji Flagi mobilne.
isIOS Boolean Oznaczenie sesji iOS. Zobacz więcej w sekcji Flagi mobilne.
isAndroid Boolean Oznaczenie sesji Android. Zobacz więcej w sekcji Flagi mobilne.

Metody

Na podstawie backendu automatyzacji używanego w Twojej sesji, WebdriverIO określa, które Polecenia protokołu (protocol commands) zostaną dołączone do obiektu przeglądarki. Na przykład, jeśli uruchomisz zautomatyzowaną sesję w Chrome, będziesz mieć dostęp do poleceń specyficznych dla Chromium, takich jak elementHover, ale nie będziesz mieć dostępu do żadnego z poleceń Appium.

Ponadto WebdriverIO zapewnia zestaw wygodnych metod, które są rekomendowane w celu interakcji z przeglądarką lub elementami na stronie.

Oprócz tego dostępne są następujące polecenia:

Nazwa Parametry Szczegóły
addCommand - commandName (Type: String)
- fn (Type: Function)
- attachToElement (Type: boolean)
Umożliwia zdefiniowanie niestandardowych poleceń, które mogą być wywoływane z obiektu przeglądarki do celów kompozycji. Przeczytaj więcej w przewodniku Niestandardowe polecenie (custom command).
overwriteCommand - commandName (Type: String)
- fn (Type: Function)
- attachToElement (Type: boolean)
Pozwala zastąpić dowolne polecenie przeglądarki niestandardową funkcjonalnością. Zachowaj ostrożność przy korzystaniu z tej metody, ponieważ może zdezorientować użytkowników frameworka. Przeczytaj więcej w przewodniku Niestandardowe polecenie (custom command).
addLocatorStrategy - strategyName (Type: String)
- fn (Type: Function)
Pozwala zdefiniować niestandardową strategię selektora, więcej w przewodniku Selektory.

Uwagi

Flagi mobilne

W razie konieczności modyfikacji testów na podstawie tego, czy sesja działa na urządzeniu mobilnym, możesz uzyskać dostęp do flag urządzeń mobilnych, aby to sprawdzić.

Na przykład, biorąc pod uwagę tę konfigurację:

// wdio.conf.js
export const config = {
    // ...
    capabilities: {
        platformName: 'iOS',
        app: 'net.company.SafariLauncher',
        udid: '123123123123abc',
        deviceName: 'iPhone',
        // ...
    }
    // ...
}

Możesz uzyskać dostęp do tych flag w swoim teście w następujący sposób:

// Note: `driver` is the equivalent to the `browser` object but semantically more correct
// you can choose which global variable you want to use
console.log(driver.isMobile) // outputs: true
console.log(driver.isIOS) // outputs: true
console.log(driver.isAndroid) // outputs: false

Taki zabieg może okazać się pomocny, jeżeli, na przykład, chcesz zdefiniować selektory w ramach page objects na podstawie typu urządzenia, jak poniżej:

// mypageobject.page.js
import Page from './page'

class LoginPage extends Page {
    // ...
    get username() {
        const selectorAndroid = 'new UiSelector().text("Cancel").className("android.widget.Button")'
        const selectorIOS = 'UIATarget.localTarget().frontMostApp().mainWindow().buttons()[0]'
        const selectorType = driver.isAndroid ? 'android' : 'ios'
        const selector = driver.isAndroid ? selectorAndroid : selectorIOS
        return $(`${selectorType}=${selector}`)
    }
    // ...
}

Możesz także użyć tych flag, aby uruchomić tylko niektóre testy dla określonych typów urządzeń:

// mytest.e2e.js
describe('my test', () => {
    // ...
    // only run test with Android devices
    if (driver.isAndroid) {
        it('tests something only for Android', () => {
            // ...
        })
    }
    // ...
})

Eventy

Obiekt przeglądarki jest EventEmitterem i emitowanych jest kilka eventów dla różnych przypadków użycia.

Poniżej znajduje się lista eventów. Pamiętaj, że nie jest to jeszcze pełna lista wszystkich dostępnych eventów. Możesz pomóc w aktualizacji dokumentu, dodając brakujące opisy eventów.

request.performance

Event mający na celu pomiar wydajności na poziomie WebDrivera. Ilekroć WebdriverIO wyśle żądanie do backendu WebDrivera, event zostanie wyemitowany z kilkoma przydatnymi informacjami:

  • durationMillisecond: Czas trwania żądania w milisekundach.
  • error: Błąd obiektu, jeśli żądanie się nie powiodło.
  • request: Obiekt żądania. Zawiera url, metodę, nagłówki itp.
  • retryCount: Jeśli zwrócone zostanie 0, żądanie było pierwszą próbą. Wzrośnie po tym, jak WebDriverIO ponownie spróbuje wykonać żądanie.
  • success: Zwraca wartość typu boolean na bazie tego, czy żądanie zakończyło się sukcesem lub nie. Jeśli zwrócony będzie false, zostanie przekazana również właściwość error.

Przykładowy event:

Object {
  "durationMillisecond": 0.01770925521850586,
  "error": [Error: Timeout],
  "request": Object { ... },
  "retryCount": 0,
  "success": false,
},

Niestandardowe polecenia

Możesz ustawić niestandardowe polecenia w zakresie przeglądarki, aby wyodrębnić często wykorzystywane przypadki użycia. Aby uzyskać więcej informacji, zapoznaj się z naszym przewodnikiem na temat poleceń niestandardowych.