-
-
Notifications
You must be signed in to change notification settings - Fork 8.6k
[py] Replace deprecated get_attribute() in tests #14807
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Signed-off-by: Viet Nguyen Duc <nguyenducviet4496@gmail.com>
PR Reviewer Guide 🔍Here are some key observations to aid the review process:
|
PR Code Suggestions ✨Explore these optional code suggestions:
|
CI Failure Feedback 🧐(Checks updated until commit 956318e)
|
aca6f88 to
d8e6ac0
Compare
Signed-off-by: Viet Nguyen Duc <nguyenducviet4496@gmail.com>
d8e6ac0 to
956318e
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am not into python, so this is review of the things from the perspective of a java developer.
| T = TypeVar("T") | ||
|
|
||
| WebDriverOrWebElement = Union[WebDriver, WebElement] | ||
| attr_get_property = ["value", "checked", "index", "selected"] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The "id" should be a property too, otherwise you only read ids defined in html.
All the .get_dom_attribute("id") calls below should be replaced by get_property("id")
| element_attribute = ( | ||
| driver.find_element(*locator).get_dom_attribute(attribute_) | ||
| if attribute_ not in attr_get_property | ||
| else driver.find_element(*locator).get_property(attribute_) | ||
| ) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You might need to translate the names on the caller site if one of PROPERTY_ALIASES (defined in the /attribute.js) is used.
https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/webdriver/atoms/attribute.js
| from selenium.webdriver.common.by import By | ||
|
|
||
|
|
||
| def test_should_return_null_when_getting_the_value_of_an_attribute_that_is_not_listed(driver, pages): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think the tests for get_attribute should stay as long as the method is not removed (there is currently no plan as faur as i can tell). New tests / files for get_dom_attribute and get_property should be added,
|
@SeleniumHQ/selenium-tlc decided to reverse the deprecation, so this PR is unnecessary. Thanks, @VietND96! |
User description
Thanks for contributing to Selenium!
A PR well described will help maintainers to quickly review and merge it
Before submitting your PR, please check our contributing guidelines.
Avoid large PRs, help reviewers by making them as simple and short as possible.
Description
Mostly changes in
get_attribute("value")->get_property("value")get_attribute("checked")->get_property("checked")get_attribute("index")->get_property("index")get_attribute("selected")->get_property("selected")get_dom_attribute()Motivation and Context
Types of changes
Checklist
PR Type
enhancement, tests
Description
get_attribute()method withget_property()andget_dom_attribute()across various files to align with updated WebDriver API practices.Changes walkthrough 📝
2 files
expected_conditions.py
Update element attribute and value checks in expected conditionspy/selenium/webdriver/support/expected_conditions.py
get_attribute()withget_property()for element value checks.get_attribute()withget_dom_attribute()for elementattribute checks.
select.py
Update index attribute checks in select elementspy/selenium/webdriver/support/select.py
get_attribute()withget_dom_attribute()for index checks inselect elements.
13 files
api_example_tests.py
Update attribute access methods in API example testspy/test/selenium/webdriver/common/api_example_tests.py
get_attribute()withget_property()andget_dom_attribute()in various tests.
children_finding_tests.py
Update child element attribute access in testspy/test/selenium/webdriver/common/children_finding_tests.py
get_attribute()withget_dom_attribute()in child elementfinding tests.
clear_tests.py
Update input value checks in clear testspy/test/selenium/webdriver/common/clear_tests.py
get_attribute()withget_property()for value checks afterclearing inputs.
correct_event_firing_tests.py
Update event firing checks for input valuespy/test/selenium/webdriver/common/correct_event_firing_tests.py
get_attribute()withget_property()for event firing checks.driver_element_finding_tests.py
Update element attribute access in driver element finding testspy/test/selenium/webdriver/common/driver_element_finding_tests.py
get_attribute()withget_dom_attribute()andget_property()in element finding tests.
executing_async_javascript_tests.py
Update async JavaScript execution tests for attribute accesspy/test/selenium/webdriver/common/executing_async_javascript_tests.py
get_attribute()withget_property()in async JavaScriptexecution tests.
form_handling_tests.py
Update form handling tests for attribute accesspy/test/selenium/webdriver/common/form_handling_tests.py
get_attribute()withget_property()in form handling tests.frame_switching_tests.py
Update frame switching tests for attribute accesspy/test/selenium/webdriver/common/frame_switching_tests.py
get_attribute()withget_property()andget_dom_attribute()in frame switching tests.
interactions_tests.py
Update interaction tests for attribute accesspy/test/selenium/webdriver/common/interactions_tests.py
get_attribute()withget_property()in interaction tests.interactions_with_device_tests.py
Update device interaction tests for attribute accesspy/test/selenium/webdriver/common/interactions_with_device_tests.py
get_attribute()withget_property()in device interactiontests.
select_element_handling_tests.py
Update select element handling tests for attribute accesspy/test/selenium/webdriver/common/select_element_handling_tests.py
get_attribute()withget_property()in select elementhandling tests.
stale_reference_tests.py
Update stale reference tests for attribute accesspy/test/selenium/webdriver/common/stale_reference_tests.py
get_attribute()withget_dom_attribute()in stale referencetests.
text_handling_tests.py
Update text handling tests for attribute accesspy/test/selenium/webdriver/common/text_handling_tests.py
get_attribute()withget_property()in text handling tests.