Return 不是 driver.find_elements_by 元素 ID 的东西
Return something that isn't element ID with driver.find_elements_by
我正在寻找某个 class 的某些元素的列表。但是,driver.find_elements_by_locator return 是默认的 WebElements 列表。由于元素 ID 每时每刻都在变化,我想知道我是否可以使用 find_elements_by_locator 和 return 一些更恒定的东西的列表,比如 XPATH。
代码:
listofblocks = driver1.find_elements_by_class_name("android.widget.RelativeLayout")
print(listofblocks)
在技术上没有什么是行不通的,只是在寻找更好的return。
看,
driver.find_elements_by_locator
其中 locator 可以是 xpath、css 或 id, class..等
它总是return一个列表,而不是元素ID。
并且该列表将包含与传递的定位器关联的 WebElements。
一旦你有了一个列表,在你的情况下 listofblocks
,你可以迭代它:-
for block in listofblocks:
print(block.text) # this is just an example, you can call any webelement method here.
还有
listofblocks[0]
会return列表的第一个元素,所以
你可以做到
listofblocks[0].click()
或 listofblocks[0].text
等等..
我的回答取决于你想用你拿回来的东西做什么。如您所说,使用 driver.find_elements_by_locator 将 return WebElements 列表。一旦您拥有这些元素,您就可以从它们中提取您需要的任何信息,假设它在那里。查找元素的特定属性:
attr_values = [element.get_attribute('my_attr') for element in listofblocks]
您暗示您可能正在寻找某个不会更改的对象的唯一标识符。为此,您应该与开发人员讨论以帮助识别这些东西。您可能需要结合使用 class 和位置。
我正在寻找某个 class 的某些元素的列表。但是,driver.find_elements_by_locator return 是默认的 WebElements 列表。由于元素 ID 每时每刻都在变化,我想知道我是否可以使用 find_elements_by_locator 和 return 一些更恒定的东西的列表,比如 XPATH。
代码:
listofblocks = driver1.find_elements_by_class_name("android.widget.RelativeLayout")
print(listofblocks)
在技术上没有什么是行不通的,只是在寻找更好的return。
看,
driver.find_elements_by_locator
其中 locator 可以是 xpath、css 或 id, class..等
它总是return一个列表,而不是元素ID。
并且该列表将包含与传递的定位器关联的 WebElements。
一旦你有了一个列表,在你的情况下 listofblocks
,你可以迭代它:-
for block in listofblocks:
print(block.text) # this is just an example, you can call any webelement method here.
还有
listofblocks[0]
会return列表的第一个元素,所以
你可以做到
listofblocks[0].click()
或 listofblocks[0].text
等等..
我的回答取决于你想用你拿回来的东西做什么。如您所说,使用 driver.find_elements_by_locator 将 return WebElements 列表。一旦您拥有这些元素,您就可以从它们中提取您需要的任何信息,假设它在那里。查找元素的特定属性:
attr_values = [element.get_attribute('my_attr') for element in listofblocks]
您暗示您可能正在寻找某个不会更改的对象的唯一标识符。为此,您应该与开发人员讨论以帮助识别这些东西。您可能需要结合使用 class 和位置。