<a> 使用Selenium从父元素获取标签



我正在尝试通过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阶段出现以下代码错误,如下所示:

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

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

为了更清楚起见,这是我尝试从这里获取URL的页面:https://www.facebook.com/momandpopmusic(我试图提取他们的业务URL - 纯粹是一个示例页面,纯粹出于教育目的(。

由于"sp_XObDbAMxJiG"保持不变,您可以尝试以下操作:

var url = driver.FindElement(By.XPath("//i[contains(@class, 'sp_XObDbAMxJiG')]/following-sibling::a")).GetAttribute("href");

相关内容

  • 没有找到相关文章

最新更新