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)
抱歉我的误导。我之前提供的 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)