C# 在selenium中获取此元素文本的最佳方法
我所说的要素如下:C# 在selenium中获取此元素文本的最佳方法,c#,selenium,xpath,C#,Selenium,Xpath,我所说的要素如下: <tbody> <tr id="tableUsers_0__TR" class="active" name="Tr_tableUsers[0]_Selected"> <td> <input id="tableUsers_0__POSName" type="hidden" value="Indian" name="tableUsers[0].POSName"/> Indian
<tbody>
<tr id="tableUsers_0__TR" class="active" name="Tr_tableUsers[0]_Selected">
<td>
<input id="tableUsers_0__POSName" type="hidden" value="Indian" name="tableUsers[0].POSName"/>
Indian
</td>
然后使用以下方法获取文本:
driver.FindElement(By.XPath(xpath)).Text
这是最好的方式吗?还是不?
还有比这更好的方法吗?比使用Xpath更好。是的,这里有一种比
Xpath
更好的方法,可以将By.id
用作:-
driver.FindElement(By.Id("tableUsers_0__TR")).Text
或通过.css选择器使用:-
driver.FindElement(By.CssSelector("tr#tableUsers_0__TR td")).Text
注意:-始终将Xpath
定位器放在最后一个优先级,因为它比其他定位器慢得多,在您的情况下,如果元素具有id
属性,那么使用By.id()
的最佳方法是使用By.Name()
,By.ClassName()
,使用其他定位器来定位元素,By.CssSelector()
等,如果可能的话。是的,这里有一个比Xpath
更好的方法来使用By.id
如下:-
driver.FindElement(By.Id("tableUsers_0__TR")).Text
或通过.css选择器使用:-
driver.FindElement(By.CssSelector("tr#tableUsers_0__TR td")).Text
注意:-始终将Xpath
定位器放在最后一个优先级,因为它比其他定位器慢得多,在您的情况下,如果元素具有id
属性,那么使用By.id()
的最佳方法是使用By.Name()
,By.ClassName()
,使用其他定位器来定位元素,By.CssSelector()
等,如果可能的话。1)您可以使用选择器By.Id(“您的Id”)
2) 对于某些元素,使用IWebElement.GetAttribute(“text”)
比使用IWebElement.text
1)更有用。您可以使用选择器By.Id(“您的Id”)
2) 对于某些元素,使用IWebElement.GetAttribute(“text”)
比使用IWebElement.text更有用。Javascript执行器也可以用于返回元素的文本。可以使用以下脚本:
document.getElementById('<your id>').innerText
document.getElementById(“”).innerText
或
document.getElementById(“”).textContent
要实现这一点,必须首先创建JavascriptExecutor的对象。请参阅以下脚本:
IWebDriver driver; // driver object is created in the code somewhere
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
string valueFromId = (string)js.ExecuteScript("return document.getElementById('<your id>').innerText");
IWebDriver;//驱动程序对象是在代码的某个地方创建的
IJavaScriptExecutor js=(IJavaScriptExecutor)驱动程序;
字符串valueFromId=(string)js.ExecuteScript(“return document.getElementById(“”).innerText”);
您还可以通过在浏览器控制台中运行Javascript命令(document.ge
..)来验证此文本。Javascript执行器也可以用于返回元素的文本。可以使用以下脚本:
document.getElementById('<your id>').innerText
document.getElementById(“”).innerText
或
document.getElementById(“”).textContent
要实现这一点,必须首先创建JavascriptExecutor的对象。请参阅以下脚本:
IWebDriver driver; // driver object is created in the code somewhere
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
string valueFromId = (string)js.ExecuteScript("return document.getElementById('<your id>').innerText");
IWebDriver;//驱动程序对象是在代码的某个地方创建的
IJavaScriptExecutor js=(IJavaScriptExecutor)驱动程序;
字符串valueFromId=(string)js.ExecuteScript(“return document.getElementById(“”).innerText”);
您还可以通过在浏览器控制台中运行JavaScript命令(document.ge
…)来验证此文本。这不是一个可以获取意见的网站!这不是一个获取意见的网站!这里的问题是,文本在应答器下,没有任何定位器(ni Id ni name…)。这就是为什么我试着用应答器输入来定位文本,而不是这个应答器的父项@user3446229您是对的,但是通过定位输入,您无法在定位tr或td时获取文本,您可以在提供的HTML中获取文本,因为它位于tr和td节点内。如果在输入文本后出现任何HTML标记,那么您就无法使用输入跟随同级,但在您的情况下,它只是没有出现任何标记的文本但它现在的tr和td标签:)这里的问题是,文本在应答器下,没有任何作为定位器(ni Id ni name…)。这就是为什么我试着用应答器输入来定位文本,而不是这个应答器的父项@user3446229您是对的,但是通过定位输入,您无法在定位tr或td时获取文本,您可以在提供的HTML中获取文本,因为它位于tr和td节点内。如果在输入文本后出现任何HTML标记,那么您就无法使用输入跟随同级,但在您的情况下,它只是没有出现任何标记的文本但它现在的tr和td标签:)这里的问题是,文本在应答器下,没有任何作为定位器(ni Id ni name…)。这就是为什么我试着用应答器输入来定位文本,而不是这个应答器的父项@user3446229我认为您要么在末尾使用更精确的xpath和/td,要么使用.Text。这里的问题是,文本在应答器下,没有任何定位器(ni Id ni name…)。这就是为什么我试着用应答器输入来定位文本,而不是这个应答器的父项@user3446229我认为您要么在末尾使用更精确的xpath和/td,要么使用.Text。