HENNGE / arsenic

Async WebDriver implementation for asyncio and asyncio-compatible frameworks
Other
349 stars 52 forks source link

Add get_property #134

Closed TheInvisibleRabbit closed 2 years ago

TheInvisibleRabbit commented 2 years ago

Chromedriver versions 91+ in non w3c mode get_attribute no longer returns properties first before trying attributes.

dimaqq commented 2 years ago

Nice! Out of curiosity, where can I read about "w3c" and "non-w3c" Chrome modes?

phyrwork commented 2 years ago

I'm struggling to find any "official" documentation about Chrome w3c mode.

Seems to be enabled/disabled through chromeOptions: https://bugs.chromium.org/p/chromium/issues/detail?id=1205107#c75.

I suspect that since chromedriver 91 w3c=true is the default as this is when get_attribute stopped returning properties.

Chrome webdriver implementation status available at https://chromium.googlesource.com/chromium/src/+/refs/heads/main/docs/chromedriver_status.md - shows GET .../{element}/property/{name} is implemented but doesn't state what version from.

https://github.com/w3c/webdriver/ lists links to webdriver implementation status for various vendors. Not sure it's Arsenic's responsibility to know whether X webdriver implementation supports Y version of webdriver API.

User-selected webdriver either supports GET ../{element}/property/{name} or not - user shouldn't use get_property unless they think it's going to work with their selected webdriver.

dimaqq commented 2 years ago

Which version of chomedriver to use: https://chromedriver.chromium.org/downloads/version-selection I think, we can recommend to match the chromedriver version to chrome... at least in general. Looks like today the latest is LATEST_RELEASE_93.0.4577

According to https://bugs.chromium.org/p/chromium/issues/detail?id=1205107#c91 the change was done between versions 90 and 91.

Background on the change: https://bugs.chromium.org/p/chromium/issues/detail?id=1205107#c25

The fist of the change appears to be: