使用文本组python获取标记

使用文本组python获取标记,python,selenium,selenium-webdriver,beautifulsoup,Python,Selenium,Selenium Webdriver,Beautifulsoup,我知道有一种使用xpath和javascript的方法 element = browser.find_element_by_xpath("//*[contains(text(),'text')]") 但此方法不检测元素/标记,这些元素/标记仅定义为标记,例如: <p> <span class="text-primary">UK</span> +44 (0) 1865 987 667<br> Pi

我知道有一种使用xpath和javascript的方法

    element = browser.find_element_by_xpath("//*[contains(text(),'text')]")
但此方法不检测元素/标记,这些元素/标记仅定义为标记,例如:

    <p>
      <span class="text-primary">UK</span>
      +44 (0) 1865 987 667<br>
      Piccadilly Gardens, 49 Piccadilly, Manchester, M1 2AP </p>

英国
+44(0)1865987667
皮卡迪利花园,49皮卡迪利,曼彻斯特,M1 2AP

在这种情况下,如果文本为+44(0)1865 987,则不会获取元素

  • 这个问题在许多例子中都是重复的,以这种方式将文本合并在一起。原因可能是什么
  • 是否有方法在beautifulsoup中使用文本搜索来获取标签

  • 在Selenium中,您可以尝试使用
    子字符串
    匹配

    text="+44 (0) 1865 987 667"
    print(WebDriverWait(driver,20).until(EC.visibility_of_element_located((By.XPATH,"//*[contains(.,'" + text + "')]"))).text)
    

    我的期望是,您需要使用以下功能组合:

  • -在子项中查找匹配项/忽略前导/尾随空格等
  • -对于部分匹配
  • 把所有东西放在一起:

    element = driver.find_element_by_xpath("//*[contains(normalize-space(),'+44 (0) 1865 987 667')]")
    
    演示:


    更多信息:

    html中是否可以出现多个事件?@QHarr是。可能有。通过使用selenium搜索所有标记,然后与调用字符串匹配,我找到了一个解决方案。我在标签上加了a和p。然而,它可以变得更通用。