【问题标题】:unable to select an element using xpath in selenium and python无法在 selenium 和 python 中使用 xpath 选择元素
【发布时间】:2020-04-27 17:59:39
【问题描述】:

我一直在尝试通过 xpath 选择一个元素并显示它,但每次尝试运行代码时都会出错。我通过检查元素并复制完整的xpath得到了xpath,但它给了我错误。它也是一种动态形式,因此我无法选择直接文本,并且我可能需要使用地址来定位该元素,因为它每次都会更改,但我无法选择该特定元素。如何选择元素?

这就是我尝试选择元素的方式

name_from_doc=browser.find_element_by_xpath('/html/body/form/div[3]/div[3]/div/div[4]/div/div[2]/div[4]/div[2]/text()[1]')
print(name_from_doc)

我得到的错误是

InvalidSelectorException: Message: invalid selector: The result of the xpath expression "/html/body/form/div[3]/div[3]/div/div[4]/div/div[2]/div[4]/div[2]/text()[1]" is: [object Text]. It should be an element.

我想将人名和地址分别存储在两个不同的变量中

【问题讨论】:

    标签: python selenium xpath automation


    【解决方案1】:

    要获取值NAPERVILLE IL 使用以下xpath 获取元素,然后使用splitlines() 和最后一个索引值。

    name_from_doc=browser.find_element_by_xpath('//div[contains(.,"Billing Address")]/following::div[1]').text
    print(name_from_doc.splitlines()[-1])
    

    更新

    name_from_doc=browser.find_element_by_xpath('//div[contains(.,"Billing Address")]/following::div[1]').text
    print(name_from_doc.splitlines()[0])
    print(name_from_doc.splitlines()[1])
    print(name_from_doc.splitlines()[-1])
    

    【讨论】:

    • 我也想得到这个人的名字?我该怎么做?
    • 还有另一个地址..分割线在做什么?
    • @reduxHelpPlz:如果您关心的任何行 <br> 的文本只是行,这将拆分行。
    • 有什么方法可以让我只得到前两个数字而不是第二行的整个地址?我的意思是现在它会打印 10 MUIRHEAD 但我只需要 10 而不是 muirhead
    • 抱歉,在英国来得太晚了。我明天回来。看看你能不能做到这一点,把第二个打印语句放在一个变量中,比如 ele 然后拆分。打印 ele.split(" ")[1]
    【解决方案2】:

    由于Billing Address 文本始终存在,因此可以通过在 xpath 中使用其文本到达那里,然后通过在 xpath 中使用 following 找到其确切值。
    你可以这样做:

    name_from_doc = browser.find_element_by_xpath("//div[contains(text(),'Billing Address')]//following::div[1]//br[2]")
    print(name_from_doc.text)
    

    【讨论】:

    • NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//div[contains(@text,'Billing Address')]//following::div[1]//br[2]"} 收到此错误
    • @reduxHelpPlz 已经编辑了我的答案,在最后一个错误中出错了。请选择最新的答案。
    • 没有出现任何错误,但没有显示任何内容!!
    猜你喜欢
    • 2020-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 2020-08-06
    • 1970-01-01
    • 1970-01-01
    • 2018-06-14
    相关资源
    最近更新 更多