不能 select 使用 C# 的 selenium Web 驱动程序基于其标签名称的元素
Cannot select an element based on its tag name using selenium web driver for C#
我正在使用 C# 的 Selenium Web 驱动程序,我使用的浏览器是 Google Chrome。当我尝试获取下面 HTML 代码片段中演示的元素的内部 html (文本)时,我得到 "no such element: Unable to locate element: { "方法":"css 选择器","选择器":"跨度"}" 错误。
<a class="profile-link" href="#">
<span dir="ltr">
<span aria-hidden="true">FirstName LastName</span>
<span class="visually-hidden">xxxxxxxxxxx</span>
</span>
</a>
我用来获取包含名字和姓氏的跨度的 C# 代码是:
string result = driver.FindElements(By.ClassName("profile-link")).Last().FindElement(By.TagName("span")).FindElement(By.TagName("span")).Text;
此外,当我尝试使用 FindElements
和 Last()
而不是 FindElement
获取名字和姓氏时,我得到 "Sequence contains no elements "
在这种情况下,我使用的代码是:
string result = driver.FindElements(By.ClassName("profile-link")).Last().FindElements(By.TagName("span")).Last().FindElements(By.TagName("span")).First().Text + ",";
如何解决此问题并获取包含 FirstName 和 LastName 的范围的内部 HTML?
我猜你在访问该元素之前错过了等待/延迟。
尝试添加
WebDriver.WaitForElementIsVisible(By.Xpath("(//a[@class='profile-link')])[last()]"));
然后使用您的代码。
另外,我不确定您找到该元素的方式。
CSS 选择器或 XPath 在我看来在这里更可靠。
所以,请试试这个:
WebDriver.WaitForElementIsVisible(By.Xpath("(//a[@class='profile-link')])[last()]"));
string result = driver.FindElement(By.Xpath("(//a[@class='profile-link')])[last()]/span/span")).Text;
或者,您可以使用 XPath
或 css
。下面我尝试使用 XPath
//a[@class='profile-link']/descendant::span[2]
在代码中:
string result = driver.FindElement(By.XPath("//a[@class='profile-link']/descendant::span[2]")).Text;
我正在使用 C# 的 Selenium Web 驱动程序,我使用的浏览器是 Google Chrome。当我尝试获取下面 HTML 代码片段中演示的元素的内部 html (文本)时,我得到 "no such element: Unable to locate element: { "方法":"css 选择器","选择器":"跨度"}" 错误。
<a class="profile-link" href="#">
<span dir="ltr">
<span aria-hidden="true">FirstName LastName</span>
<span class="visually-hidden">xxxxxxxxxxx</span>
</span>
</a>
我用来获取包含名字和姓氏的跨度的 C# 代码是:
string result = driver.FindElements(By.ClassName("profile-link")).Last().FindElement(By.TagName("span")).FindElement(By.TagName("span")).Text;
此外,当我尝试使用 FindElements
和 Last()
而不是 FindElement
获取名字和姓氏时,我得到 "Sequence contains no elements "
在这种情况下,我使用的代码是:
string result = driver.FindElements(By.ClassName("profile-link")).Last().FindElements(By.TagName("span")).Last().FindElements(By.TagName("span")).First().Text + ",";
如何解决此问题并获取包含 FirstName 和 LastName 的范围的内部 HTML?
我猜你在访问该元素之前错过了等待/延迟。
尝试添加
WebDriver.WaitForElementIsVisible(By.Xpath("(//a[@class='profile-link')])[last()]"));
然后使用您的代码。
另外,我不确定您找到该元素的方式。
CSS 选择器或 XPath 在我看来在这里更可靠。
所以,请试试这个:
WebDriver.WaitForElementIsVisible(By.Xpath("(//a[@class='profile-link')])[last()]"));
string result = driver.FindElement(By.Xpath("(//a[@class='profile-link')])[last()]/span/span")).Text;
或者,您可以使用 XPath
或 css
。下面我尝试使用 XPath
//a[@class='profile-link']/descendant::span[2]
在代码中:
string result = driver.FindElement(By.XPath("//a[@class='profile-link']/descendant::span[2]")).Text;