python - 如何点击一个使用 Selenium 和 Python 的元素
问题描述
在下面提供了一个 xpath:
<svg:image xlink:href="some.svg" class="holder-38" width="24" height="268" preserveAspectRatio="none" x="426.7" y="473" type="image/svg+xml" data-ember-action="" data-ember-action-12238="12238">
我可以使用 xpath 访问它(没有标记为'*'):
'//*[@class="holder-38"]'
但无法使用标签访问svg:image
:
'//svg:image[@class="holder-38"]'
如何在此处指定标签?
解决方案
<svg:image>
该<svg:image>
元素包括 SVG 文档中的图像。它可以显示光栅图像文件或其他 SVG 文件。SVG 软件必须支持的唯一图像格式是 JPEG、PNG 和其他 SVG 文件。动画 GIF 行为未定义。
显示的 SVG 文件<image>
被视为未加载外部资源、未应用:visited样式且无法交互的图像。要包含动态 SVG 元素,请尝试使用外部 URL。要包含 SVG 文件并在其中运行脚本,请尝试在.<use>
<object>
<foreignObject>
注意:HTML 规范定义
<image>
为<img>
解析 HTML 的同义词。此特定元素及其行为仅适用于 SVG 文档或内联 SVG。
链接:href
xlink:href属性将指向资源的链接定义为引用<IRI>
。该链接的确切含义取决于使用它的每个元素的上下文。
自 SVG 2 起已弃用:不再推荐使用此功能。尽管某些浏览器可能仍然支持它,但它可能已经从相关的 Web 标准中删除,可能正在被删除,或者可能仅出于兼容性目的而保留。避免使用它,并尽可能更新现有代码;请参阅本页底部的兼容性表以指导您的决定。请注意,此功能可能随时停止工作。
注意:SVG 2 删除了对
xlink
命名空间的需求,因此xlink:href
您应该使用href
.
解决方案
要click()
在所需的元素上,您需要为所需的元素诱导WebDriverWait,element_to_be_clickable
您可以使用以下解决方案:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//*[name()='svg:image' and starts-with(@class, 'holder') and contains(@xlink:href, 'some')]"))).click()
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
推荐阅读
- excel - 选择下拉列表时填写数据
- hadoop - 如何使用即席查询提高 Hive 的性能
- r - 如何停止 ggplotly() 以意想不到的方式更改刻面图的侧标签的位置?
- javascript - bootstrap 4 carousel - 图像指示器显示/隐藏
- pandas - 数据框熊猫中的列值替换
- validation - 如何解决使用 Cerberus 验证 3 层 YAML 文件的问题?
- python - 如果其中一个值大于零,如何比较两个字典并打印
- vue.js - Vue 数据表标题全部出现在一列中
- android - npm run android 在 NDK 工具链中找不到工具链
- swift - 无法使用 doubleTap() 进行简单的 UI 测试 (macOS)