Selenium 获取 img 元素的 CSS Selector 和 XPath 并存储
使用 Selenium 获取每个 img 元素的 css_selector 和 xpath,并存储这些信息以备将来在页面刷新后仍然能找到元素并点击它们。
imgs = driver.find_elements(By.TAG_NAME, 'img')
print('img数量:', len(imgs))
for element in imgs:
if not element.is_displayed():
continue
# 获取 css_selector
css_selector = element.get_attribute('css_selector')
# 获取 xpath
xpath = driver.execute_script('return getPathTo(element)', element)
# 存储 css_selector 和 xpath,用于页面刷新后仍然能找到元素
# 这里可以将 css_selector 和 xpath 存储到一个列表或字典中
# 以便在需要时使用
# 例如:
# css_selectors.append(css_selector)
# xpaths.append(xpath)
# 点击元素
element.click()
请注意,上述代码中的 getPathTo(element) 是一个自定义的 JavaScript 函数,它可以返回指定元素的 xpath。你需要将此函数添加到你的代码中。
以下是一个示例的 getPathTo 函数的实现:
function getPathTo(element) {
if (element.id !== '')
return 'id("' + element.id + '")';
if (element === document.body)
return element.tagName;
var ix = 0;
var siblings = element.parentNode.childNodes;
for (var i = 0; i < siblings.length; i++) {
var sibling = siblings[i];
if (sibling === element)
return getPathTo(element.parentNode) + '/' + element.tagName + '[' + (ix + 1) + ']';
if (sibling.nodeType === 1 && sibling.tagName === element.tagName)
ix++;
}
}
这样,你就可以获取每个 img 元素的 css_selector 和 xpath,并且可以存储它们以便在页面刷新后仍然能找到元素并点击它们。
原文地址: https://www.cveoy.top/t/topic/zun 著作权归作者所有。请勿转载和采集!