【问题标题】:Python: Find contain text using Xpath with a listPython:使用带有列表的 Xpath 查找包含文本
【发布时间】:2021-09-10 11:45:54
【问题描述】:

我有一个使用 Selenium 和 find_element_by_xpath() 在网站内识别的文本 sn-ps 列表。到目前为止,我能够找到一个特定的词:

greeting = ['Hi', 'Hey', 'Hello']

for greeting in greet_list:
    browser.find_element_by_xpath(f'//*[@id="Chat"]/span[text()="{greeting}"]'):

到目前为止,我已经尝试了一些其他方法,但都没有成功:

browser.find_element_by_xpath(f'//*[@id="Chat"] and [contains("{greeting}")]')
browser.find_element_by_xpath(f'//*[@id="Chat"]/span[Contains[text()="{greeting}"]]')

提前非常感谢您! :D

【问题讨论】:

    标签: python selenium xpath


    【解决方案1】:

    见这里greeting = ['Hi', 'Hey', 'Hello'] greeting 是一个列表。你不能像这样迭代它:

    for greeting in greet_list:
    

    必须是:

    for greet in greeting:
    

    你可以用任何名字代替greet

    我还看到:browser.find_element_by_xpath(f'//*[@id="Chat"]/span[text()="{greeting}"]'): 的末尾是错误的。

    试用:

    for greet in greeting:
        ele = driver.find_element_by_xpath(f"//*[@id='Chat']/span[text()='{greet}']")
    

    这应该适用于大多数情况。 ele 也是一个网络元素。所以你可以在上面做.text.send_keys 等。请记住,您没有执行任何操作,所以这都是我们的猜测。

    如果这不起作用,您可以这样调试:

    //*[@id='Chat']/span[text()='Hi']
    

    复制上面的xpath 并在HTML DOM 中查看您想要匹配的nodes。另外如果有multiple nodes,记住find_element只会取第一个匹配的节点。

    【讨论】:

    • 啊这完美!太感谢了!! :D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-28
    • 2020-09-05
    • 1970-01-01
    • 2018-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多