【问题标题】:Selenium check the button[svg]硒检查按钮[svg]
【发布时间】:2020-04-04 14:10:24
【问题描述】:

我正在使用 Python 开发 Selenium。我写了一个关于 Instagram 的代码,比如 Bot。我做到了这一点。我可以登录->输入个人资料,然后按顺序喜欢照片。但我想检查喜欢或不喜欢的照片。如果照片已经喜欢,请转到下一张照片。

我无法获得类似按钮的属性。

这是不喜欢的照片示例:

<button class="wpO6b " type="button">
<svg aria-label="Like" class="_8-yf5 " fill="#262626" height="24" viewBox="0 0 48 48" width="24">
    <path clip-rule="evenodd" d="M34.3 3.5C27.2 3.5 24 8.8 24 8.8s-3.2-5.3-10.3-5.3C6.4 3.5.5 9.9.5 17.8s6.1 12.4 12.2 17.8c9.2 8.2 9.8 8.9 11.3 8.9s2.1-.7 
    11.3-8.9c6.2-5.5 12.2-10 12.2-17.8 0-7.9-5.9-14.3-13.2-14.3zm-1 29.8c-5.4 4.8-8.3 7.5-9.3 8.1-1-.7-4.6-3.9-9.3-8.1-5.5-4.9-11.2-9-11.2-15.6 0-6.2 4.6-
    11.3 10.2-11.3 4.1 0 6.3 2 7.9 4.2 3.6 5.1 1.2 5.1 4.8 0 1.6-2.2 3.8-4.2 7.9-4.2 5.6 0 10.2 5.1 10.2 11.3 0 6.7-5.7 10.8-11.2 15.6z" fill-rule="evenodd">
    </path>
</svg> 

这是喜欢的照片示例

<button class="wpO6b " type="button">
<svg aria-label="Unlike" class="_8-yf5 " fill="#262626" height="24" viewBox="0 0 48 48" width="24">
    <path clip-rule="evenodd" d="M34.3 3.5C27.2 3.5 24 8.8 24 8.8s-3.2-5.3-10.3-5.3C6.4 3.5.5 9.9.5 17.8s6.1 12.4 12.2 17.8c9.2 8.2 9.8 8.9 11.3 8.9s2.1-.7 
    11.3-8.9c6.2-5.5 12.2-10 12.2-17.8 0-7.9-5.9-14.3-13.2-14.3zm-1 29.8c-5.4 4.8-8.3 7.5-9.3 8.1-1-.7-4.6-3.9-9.3-8.1-5.5-4.9-11.2-9-11.2-15.6 0-6.2 4.6-
    11.3 10.2-11.3 4.1 0 6.3 2 7.9 4.2 3.6 5.1 1.2 5.1 4.8 0 1.6-2.2 3.8-4.2 7.9-4.2 5.6 0 10.2 5.1 10.2 11.3 0 6.7-5.7 10.8-11.2 15.6z" fill-rule="evenodd">
    </path>
</svg> 

我怎样才能(获取 aria-label="Unlike")或(aria-label="Like" 属性)。或者有没有其他解决方案? 谢谢

【问题讨论】:

  • 你能拿到元素吗?如果是,那么您必须使用element.get_attribute("aria-label")。如果您正在寻找元素定位解决方案,请分享 svg 父信息。
  • @supputuri 添加他们。
  • 试试 ` //button[normalize-space(@class)='wpO6b']/*[name()='svg']`

标签: selenium python-3.6


【解决方案1】:

这里是您可以用来查找带有 Svg 的按钮的 xpath。

 //button[normalize-space(@class)='wpO6b']/*[name()='svg']

您的代码应该如下所示。

ele = driver.find_element_by_xpath(" //button[normalize-space(@class)='wpO6b']/*[name()='svg']")
print(ele.get_attribute('aria-label')

【讨论】:

  • 成功了。谢谢你。但我还有另一个问题。我可以获得像“#262626”这样的“填充”属性,但“arial-label”标签返回=“选项”。因为我认为它是动态价值。动态值有什么解决方案吗?
  • 检查它是否指向正确的元素,你可以检查dev tools
  • 我使用 driver.find_element_by_css_selector("span.fr66n > button > svg").get_attribute("aria-label") 编辑它。谢谢大佬
猜你喜欢
  • 2021-12-08
  • 2023-01-01
  • 2021-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多