Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在selenium中获取此元素文本的最佳方法_C#_Selenium_Xpath - Fatal编程技术网

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。