【问题标题】:Cannot select an element based on its tag name using selenium web driver for C#无法使用 C# 的 selenium Web 驱动程序根据其标签名称选择元素
【发布时间】:2021-10-10 07:05:53
【问题描述】:

我正在使用 C# 的 Selenium Web 驱动程序,我使用的浏览器是 Google Chrome。当我尝试获取下面 HTML 代码片段中演示的元素的内部 html(文本)时,我得到 "no such element: Unable to locate element: {"method":"css selector","选择器":"span"}" 错误。

<a class="profile-link" href="#">
    <span dir="ltr">
        <span aria-hidden="true">FirstName LastName</span>
        <span class="visually-hidden">xxxxxxxxxxx</span>
    </span>
</a>

我用来获取包含 FirsName 和 LastName 的跨度的 C# 代码是:

string result = driver.FindElements(By.ClassName("profile-link")).Last().FindElement(By.TagName("span")).FindElement(By.TagName("span")).Text;

另外,当我尝试使用FindElementsLast() 而不是FindElement 来获取名字和姓氏时,我得到“序列不包含任何元素”

在这种情况下,我使用的代码是:

string result = driver.FindElements(By.ClassName("profile-link")).Last().FindElements(By.TagName("span")).Last().FindElements(By.TagName("span")).First().Text + ",";

如何解决此问题并获取包含 FirstName 和 LastName 的 span 的内部 HTML?

【问题讨论】:

  • 你能分享那个页面的链接吗?如果可能的话,你所有的相关代码
  • driver.FindElements(By.ClassName("profile-link")).Last() 是否会返回您期望的 Anchor 元素?
  • @rene 是的。实际上,cruisepandey 和 Prophet 回答了这个问题。感谢您的关注。

标签: c# html selenium selenium-webdriver selenium-chromedriver


【解决方案1】:

或者,您可以使用XPathcss。下面我尝试了 XPath

//a[@class='profile-link']/descendant::span[2]

在代码中:

string result = driver.FindElement(By.XPath("//a[@class='profile-link']/descendant::span[2]")).Text;

【讨论】:

    【解决方案2】:

    我猜您在访问该元素之前错过了等待/延迟。
    尝试添加

    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;
    

    【讨论】:

      猜你喜欢
      • 2015-09-19
      • 2020-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-11
      • 2020-09-30
      • 1970-01-01
      相关资源
      最近更新 更多