首页 > 解决方案 > Selenium C#:如何在
标签后获取文本

问题描述

我看过其他关于在 br 标签后获取文本的帖子,但没有一篇文章能帮助我从网页中获取文本。

这是我试图从中获取文本的html片段:

.....
<div class="col-md6">
 <ul`enter code here`>
  <p>
    <strong>Rates</strong>
    <br>
     "0.29C/wh 1-Year Fixed"
    <br>
     "0.39C/wh 2-Year Fixed"
    <br>
     "0.59C/wh 3-year Fixed"
    <br>
   </p>
   <p>....</p>
  </ul>
 </div>

我尝试了以下 xPath 来获取第一个 br 标记的包含 0.29C 的文本元素:

"//*[@id='WebPartWPQ2']/div[1]/div[1]/div[2]/div/div[1]/ul/p[1]/br[1]"

但是,当我在 C# & Selenium 中编写以下代码时,我得到文本的 null 返回:

var productRateElement = Driver.driver.FindElement(By.XPath("/ [@id='WebPartWPQ2']/div[1]/div[1]/div[2]/div/div[1]/ul/p[1]/br[1]"));

var productRateText = productRateElement.Text;
   

在 Chrome 浏览器中,我可以使用相同的 XPath,并且可以在第一个 br 标记之后定位文本元素,但在 C# 代码中它返回 null。

希望得到反馈如何解决这个问题。

标签: c#selenium-webdriverxpathselenium-chromedriver

解决方案


您可以尝试这些 XPath-1.0 表达式:

//div/ul/p/strong/following-sibling::br[1]/following-sibling::text()[1]

或整个路径

//*[@id='WebPartWPQ2']/div[1]/div[1]/div[2]/div/div[1]/ul/p/strong/following-sibling::br[1]/following-sibling::text()[1]

推荐阅读