python - 有什么方法可以获取 selenium web 元素的 xpath 吗?
问题描述
我有一个充满关键字的数据库,我必须获取包含这些单词的 Web 元素的 xpath。(每个单词旁边都有一个可展开的列表按钮。单击该按钮我需要获取关键字的 xpath 并对其进行修改以获取按钮 XPath)。
我可以使用 selenium web 元素,
keyword_element = driver.find_element_by_xpath(f"//*[contains(text(), '{keyword}')]")
这只会获取包含这样关键字的元素的 selenium web 元素,
<selenium.webdriver.remote.webelement.WebElement (session="1df8dbbae8c93fd772a5134ed0666a7a", element="b3d2bc8d-0c8c-4fb0-b3d1-2a5d49537567")>
HTML dev 元素看起来像这样。
<span class="fancytree-node actlitetreeitem fancytree-exp-n fancytree-ico-c">
<span class="fancytree-expander"></span>
<span class="fancytree-checkbox"></span>
<span class="fancytree-title">SNAPCHAT</span>
</span>
'SNAPCHAT' 是关键字,我需要访问 'fancytree-checkbox' 元素。但我必须使用关键字 SNAPCHAT 来获取它。
有什么方法可以从中获取 web 元素的 xpath 吗?
解决方案
使用其中任何一个xpath
来标识元素fancytree-checkbox
。
利用preceding-sibling
keyword_element = driver.find_element_by_xpath(f"//*[contains(text(), '{keyword}')]/preceding-sibling::span[1]")
或识别父节点,然后识别其子节点
keyword_element = driver.find_element_by_xpath(f"//span[.//*[contains(text(), '{keyword}')]]//span[@class='fancytree-checkbox']")
推荐阅读
- excel - 将excel文本列重新格式化为特定格式
- c++ - SFML C++ 停止控制台记录:“无法设置 DirectInput 设备轴模式:1”
- python - Django 管理模板底部提交按钮
- python - 我可以像matlab一样在python中获得完全相同的总和输出吗
- sql - 生成唯一的随机值以及一系列 - 为 postgresql 创建测试数据
- wordpress - 如何创建自定义链接生成器表单?
- mongodb-query - 有没有办法将用 mongo shell 编写的查询转换为 MongoDB 查询语言
- javascript - 使用 JavaScript 的登录和注册模式的过渡显示
- python - 把原来的函数装饰成点击命令后如何运行?
- java - 连四游戏如何正常输出玩家