如何检查html文档中是否存在具有指定xpath的元素?

时间:2015-06-19 06:55:15

标签: python selenium xpath

我正在使用python中的selenium,并想知道html页面中是否存在具有指定xpath的元素。我该怎么办?

示例输入:

chek_if_exists("xpath")
  

输出:TrueFalse

3 个答案:

答案 0 :(得分:3)

您必须编写一个函数来检查元素是否存在。如果元素存在,该方法将返回True,如果找不到元素并抛出异常,则返回False。

def hasXpath(xpath):
    try:
        self.browser.find_element_by_xpath(xpath)
        return True
    except:
        return False

答案 1 :(得分:2)

我们可能是写函数,返回True是xpath存在

<强>演示:

content = """<html>
    <head>
    </head>
    <body>
        <div class="start">
            <p>I am P</p>
        <div/>
        <div class="start">
            <p>I am P</p>
        <div/>
    </body> 
</html>"""


def isXpath(content, xpath):
    """
        Return True if Xpath present else return False
    """
    import lxml.html as PARSER
    root = PARSER.fromstring(content)
    if root.xpath(xpath):
        return True
    return False

print "Debug 1:", isXpath(content, "//div[@class='start']")

print "Debug 2:", isXpath(content, "//div[@id='start']")

<强>输出:

Debug 1: True
Debug 2: False

我们可以使用以下代码替换上面代码中的if loop

return bool(root.xpath(xpath))

答案 2 :(得分:0)

让我们说你有链接:

  link <-"http://www.skelbiu.lt/skelbimai/diplominiai-lt-4792675.html"

首先得到答复:

  response <- GET(link)

然后,加载文档:

  doc <- content(response,type="text/html", encoding = "UTF-8")

接下来,您要提取广告的标题。如果文本的长度不等于0,则可以通过检查条件来检查节点是否存在。如果是,则有这样的节点或文本,因此将返回“元素不存在”。

  name <- ifelse(length(xpathSApply(doc, "//title",xmlValue))!=0,
                        xpathSApply(doc, "//title",xmlValue),
                        "Element does not exist")

这个最小例子的基本思想是使用ifelse语句并检查返回的属性内容的长度。

HTH