如何针对硒中的父元素

问题描述

<button class="wpO6b ZQScA" type="button">
<div class="QBdPU ">
<svg aria-label="New Message" class="_8-yf5 " fill="#262626" height="24" viewBox="0 0 44 44" width="24"><path d="M33.7 44.12H8.5a8.41 8.41 0 01-8.5-8.5v-25.2a8.41 8.41 0 018.5-8.5H23a1.5 1.5 0 010 3H8.5a5.45 5.45 0 00-5.5 5.5v25.2a5.45 5.45 0 005.5 5.5h25.2a5.45 5.45 0 005.5-5.5v-14.5a1.5 1.5 0 013 0v14.5a8.41 8.41 0 01-8.5 8.5z"></path><path d="M17.5 34.82h-6.7a1.5 1.5 0 01-1.5-1.5v-6.7a1.5 1.5 0 01.44-1.06L34.1 1.26a4.45 4.45 0 016.22 0l2.5 2.5a4.45 4.45 0 010 6.22l-24.3 24.4a1.5 1.5 0 01-1.02.44zm-5.2-3h4.58l23.86-24a1.45 1.45 0 000-2l-2.5-2.5a1.45 1.45 0 00-2 0l-24 23.86z"></path><path d="M38.2 14.02a1.51 1.51 0 01-1.1-.44l-6.56-6.56a1.5 1.5 0 012.12-2.12l6.6 6.6a1.49 1.49 0 010 2.12 1.51 1.51 0 01-1.06.4z">
</path>
</svg>
</div>
</button>

我可以使用硒将第一个父按钮标签定位到svg标签吗 我已经知道如何使用

定位svg
self.driver.find_element_by_xpath("//svg[@aria-label='{}']".format('New Message'))

实际上我不确定结构,例如结构也可以

<button><div><div><svg></svg></div></div></button>

我想定位按钮标签,那么怎么可能?

解决方法

是的。

在您的svg元素中引用HTML代码,父元素是div标签,而button显然被视为祖父母。

Ancestor

选择当前节点的所有祖先(父,祖父母等)

您可以使用祖先实现button

self.driver.find_element_by_xpath("//*[name()='svg' and @aria-label='{}']//ancestor::button[1]".format('New Message'))

[1]中的button[1]最接近,而不是第一个。

如果要单击该元素,请不要忘记调用.click()

,

要访问按钮元素,可以使用Xpath:

button = driver.find_element_by_xpath("//button[@class='wpO6b ZQScA']")

然后您应该可以单击它:

button.click()
,

要获取包含svg元素的父元素,请尝试在xpath下面。

driver.find_element_by_xpath("//button[.//*[name()='svg' and @aria-label='{}']]".format("New Message"))

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...