Selenium WebDriver C# - 获取文本

Ser*_*gey 4 c# selenium webdriver c#-4.0

我在页面上有这个Html元素:

<li id="city" class="anketa_list-item">
   <div class="anketa_item-city">From</div>
    London
</li>
Run Code Online (Sandbox Code Playgroud)

我找到了这个元素:

driver.FindElement(By.Id("city"))
Run Code Online (Sandbox Code Playgroud)

如果我尝试:driver.FindElement(By.Id("city")).Text,=>我的结果:"来自\ r \n伦敦".

我怎样才能通过WebDriver获得伦敦?

小智 7

您可以轻松使用class-name:

driver.FindElement(By.Class("anketa_item-city")).Text;
Run Code Online (Sandbox Code Playgroud)

或使用 Xpath

driver.FindElement(By.Xpath("\li\div")).Text;
Run Code Online (Sandbox Code Playgroud)


Ngu*_*ang 0

抱歉我的误导。我之前提供的 xpath 是以函数 /text() 结尾的,它选择的不是节点,而是节点的文本。

解决这种情况的方法是获取父级的文本,然后替换子级的文本,然后修剪以删除空格/特殊空格/等......

var parent = driver.FindElement(By.XPath("//li"))
var child = driver.FindElement(By.XPath("//li/div"))
var london = parent.Text.Replace(child.Text, "").Trim()
Run Code Online (Sandbox Code Playgroud)

笔记:

如果 Trim() 不起作用,那么“空格”似乎不是空格,而是其他一些非打印字符,可能是制表符。在这种情况下,您需要使用 String.Trim 方法,该方法采用字符数组:

char[] charsToTrim = { ' ', '\t' };
string result = txt.Trim(charsToTrim);
Run Code Online (Sandbox Code Playgroud)