正在获取 tag from parent element with Selenium

问题描述 投票:0回答:1

我正在尝试通过Selenium Chromedriver获取此HTML中<a>标记的值。

 <div class="_4mcc _3qn7 _61-0 _2fyi _3qnf">
 <i class="_3um9 img sp_XObDbAMxJiG sx_7127ff" alt=""></i>
 <a class="_6dvq" target="_blank" href="https://example.com/hello" rel="nofollow noopener" data-lynx-mode="hover">example.com/</a>
 </div>

我想找到example.com

规则:我不能使用IDcss selectors,因为HTML / CSS经常更改。唯一不变的类是sp_XObDbAMxJiG,所以我必须使用它并获取父类。

我的代码不起作用:

  var cssClass = driver.FindElement(By.ClassName("sp_XObDbAMxJiG"));
  var cssClassParent = cssClass.GetParent();
  var getA = cssClassParent.FindElement(By.CssSelector("a")); 
  var data = getA.GetAttribute("href");

和我的GetParent()函数:

public static class MyExtensions
{
    public static IWebElement GetParent(this IWebElement node)
    {
        return node.FindElement(By.XPath(".."));
    }
}

getA阶段的以下代码错误,带有:

{“没有这样的元素:无法找到元素:{\” method \“:\” css 选择器\“,\”选择器\“:\” a \“} \ n(会话信息:无头 chrome = 81.0.4044.138)“}

但是<a>标签肯定在上述页面的此区域内。

[为了更加清楚,这是我试图从此处获取URL的页面:https://www.facebook.com/momandpopmusic(我试图提取其业务URL-纯粹是示例页面,纯粹是出于教育目的)。] >

我正在尝试获取 tag in this HTML through Selenium Chromedriver.

的值>

c# selenium selenium-chromedriver
1个回答
2
投票

由于“ sp_XObDbAMxJiG”保持不变,因此您可以尝试以下操作:

var url = driver.FindElement(By.XPath("//i[contains(@class, 'sp_XObDbAMxJiG')]/following-sibling::a")).GetAttribute("href");
© www.soinside.com 2019 - 2024. All rights reserved.