如何解决在此示例中,HTML中的svg正确的xpath是什么?
到目前为止,我有以下代码:
like_button = driver.find_element_by_xpath('//div[@class="QBdPU "]/*[name()="svg"][@aria-label="Like"]')
like_button().click()
想知道是否有人可以纠正我的xpath。
解决方法
尝试将xpath表达式更改为
//div[@class="QBdPU "]/span/*[name()="svg" and @aria-label="Like"]
看看是否可行。
,如评论中的kjhughes所述,svg
元素位于HTML的不同命名空间中,因此在通过xpath进行选择时,我们需要格外小心。
我看到您正在尝试在Instagram上获得“赞”按钮,我已经在Chrome上进行了测试,我认为它也可以在Selenium上使用。试试:
//*[name()="svg" and @aria-label="Like" and @height="24"]
如果您还想在评论中点击“赞”按钮,请删除and @height="24"
。评论上的“赞”按钮具有and @height="12"
属性。
要在 Instagram 上的 Like 按钮上标识并click()
,您可以使用以下Locator Strategies中的任意一个:
-
使用
XPATH
:WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"//button[@type='button']//span//*[name()="svg" and @aria-label='Like']"))).click()
-
使用
CSS_SELECTOR
:WebDriverWait(driver,"button[type='button'] span > svg[aria-label="Like"]"))).click()
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。