在Selenium中获取此元素文本的最佳方法

vh0rcniy  于 2022-11-24  发布在  其他
关注(0)|答案(3)|浏览(299)

我所说的元素如下:

<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>

我建议的解决方案是:
第一步是通过XPath定位元素:

string xpath = ".//*[@id='tableUsers_0__PDVCode']/..";

然后使用方法取得文字:

driver.FindElement(By.XPath(xpath)).Text

这是最好的方法吗?还是不是?
有没有比这种方法更好的方法?比使用XPath更好的方法?

3hvapo4f

3hvapo4f1#

JavaScript Executor也可以用来返回元素的文本。可以使用以下脚本:

document.getElementById('<your id>').innerText

document.getElementById('<your id>').textContent

要实现这一点,必须首先创建Javascript Executor的对象。请参考以下脚本:

IWebDriver driver; // A driver object is created in the code somewhere
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
string valueFromId = (string)js.ExecuteScript("return document.getElementById('<your id>').innerText");

您还可以通过在浏览器控制台中运行JavaScript命令(document.ge ...)来验证此文本。

qnakjoqk

qnakjoqk2#

1.您可以使用选择器By.Id("your id")
1.对于某些元素,使用IWebElement.GetAttribute("text")比使用IWebElement.Text更有用

xggvc2p6

xggvc2p63#

是的,比使用XPath表达式更好的方法是将By.id用作:

driver.FindElement(By.Id("tableUsers_0__TR")).Text

或者使用By.CssSelector

driver.FindElement(By.CssSelector("tr#tableUsers_0__TR  td")).Text

注意:它总是将最后的优先级给予XPath定位器,因为它比其他定位器慢得多。在您的情况下,如果元素具有id属性,则最好的方法是使用By.Id()。否则,如果可能,尝试使用其他定位器来定位元素,如By.Name()By.ClassName()By.CssSelector()等。

相关问题