簡體   English   中英

如何使用 Python 和 Selenium 找到這個 HTML 元素?

[英]How do I find this HTML element with Python and Selenium?

這是 HTML 源代碼的摘錄:

<div class="flex items-center mt-4">
    <svg style="fill: var(--color-reptile);" viewbox="0 0 16 16" width="24">

我想找到 svg 元素。 這有效:

e = driver.find_element_by_css_selector('div.flex.items-center.mt-4 [style]')
print(e.get_attribute('style')) # prints 'fill: var(--color-reptile);'

但是我如何在不尋址父級的情況下直接找到這個元素呢? 我試過driver.find_element_by_css_selector('svg.fill\:.var\(--color-reptile\)\;')driver.find_element_by_css_selector('.var\(--color-reptile\)\;')和所有各種不同的變化,但每次嘗試只會引發“沒有這樣的元素”錯誤。

如果這是頁面上唯一的svg元素,我猜下面的xpath應該可以工作:
//*[name()='svg']
因為,當然,它不是頁面上唯一的svg ,您應該添加更多詳細信息,例如:
//*[name()='svg' and (@width='24')]

使用 css: svg[style*="fill: var(--color-reptile);"]svg[viewbox="0 0 16 16"]第一個查找包含字符串的 svg。

試試這樣的 //*[local-name()='svg'] 並獲取 style 屬性

您正在使用. 不正確。 . 表示 class,而不是樣式。 SVG 沒有 class。

這個 CSS 選擇器工作

svg[style='fill: var(--color-reptile);']

但我會 go 與你開始的變化

div.flex.items-center svg

SVG 標簽上的樣式信息很容易更改,然后您的定位器就會損壞。 DIV 父級上的類不太可能發生變化,並且該 DIV 只有一個 SVG 子級,所以你應該很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM