Issue
What's the purpose and upside of using By from selenium.webdriver.common.by instead of instead of the normal find_element_by_... methods? For example:
driver.find_element_by_id('some_ID')
vs:
from selenium.webdriver.common.by import By
driver.find_element(By.ID, 'some_ID')
Solution
According to documentation find_element()
seem to be kind of "private" method that is used by find_element_by_...()
methods and also might be used in Page Object
So using Page Object pattern is the reason why you might need find_element()
+ By
instead of find_element_by_...()
.
For example, you have some variable that contains elements' id
value
link_id = "some_id"
and you use it to locate element as
my_link = driver.find_element_by_id(link_id)
If for some reason id
attribute was removed from element, you need both to update selector and replace find_element_by_...()
method in my_link
as
link_class_name = "some_class_name"
my_link = driver.find_element_by_class_name(link_class_name)
If you use By
, then your initial locator might be
link_locator = (By.ID, "some_id")
and you locate your element as
my_link = find_element(*link_locator)
In case of changes in HTML
source you need just to update your link_locator
as
link_locator = (By.CLASS_NAME, "some_class_name")
and my_link
remains exactly the same
Answered By - Andersson
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.