xlink:href属性的Selenium / java-xpath

时间:2017-09-18 06:45:35

标签: selenium svg xpath

我尝试在下面的代码段中找到属性值为use的{​​{1}}元素

'#aaa'

我能够找到使用css选择器<svg> <use xlink:href='#aaa'></use> </svg> 。但我在xpath中需要它。我在xpath下面尝试但是它无法正常工作

use[* |href='#aaa']

注意:我需要使用值(//*[name()='use'])[ * ='#aaa' or @href='#aaa'] 来区分其他元素。

有人可以帮忙构建这个xpath。

6 个答案:

答案 0 :(得分:2)

您的谓词import Quasar, * as All from 'quasar' import { AddressbarColor } from 'quasar' 返回[ * ='#aaa' or @href='#aaa'],因为没有属性false(但href),而xlink:href没有包含文字内容的子节点{ {1}}。

请注意,任何属性的通配符为use,而'#aaa'仅适用于任何节点(属性除外)。尝试以下XPath

@*

答案 1 :(得分:1)

了解,如果有人需要包含..

"//*[name()='use'][contains(@*='#aaa')]"

答案 2 :(得分:0)

这是一个SVG标签,它的工作方式略有不同

请在xpath下面尝试:

//[local-name()='svg']/yourxpath

答案 3 :(得分:0)

使用xpath

import scipy.misc as sm
import numpy as np
from PIL import Image

def imagefunc(image):
    try:
        i = Image.open(image)
        if i.format == 'jpg':
            return i.format == 'jpg'
    except OSError:   # Checking for different possible errors in the input file
        print ('This is not a jpg image! Input has to be a jpg image!')
        return False 
    except FileNotFoundError:   # Another check for error in the input file
        print ('No image was found! Input file has to be in the same directory as this code is!')
        return False

    imgarray = np.array(sm.imread(image, True))
    return imgarray

//use[@xlink:href='#aaa']

答案 4 :(得分:0)

由于元素位于svg命名空间内,您可以使用以下xpath

//*[name()="svg"]/use[contains(@xlink:href,'#aaa')]

答案 5 :(得分:0)

由于没有任何建议对我真正有用,因此我提出了以下建议(在chrome devtools中进行了测试):

//*[name()='use' and @*[contains(.,'#aaa)]]

评论:

  • name()='使用'
    • 因为常规标签搜索(即// use)不起作用
  • @ * [包含(。,'#aaa')]
    • 因为包含通配符(即contains(@ *,'#aaa'))不起作用