首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Selenium从父元素中获取<a>标记

用Selenium从父元素中获取<a>标记
EN

Stack Overflow用户
提问于 2020-05-18 21:19:42
回答 1查看 164关注 0票数 0

我正在尝试通过Selenium获取这个<a>标记的值。

代码语言:javascript
复制
 <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 selectors经常会发生变化。唯一不改变的类是sp_XObDbAMxJiG,所以我不得不使用它,并获得父类。

我的代码,不起作用:

代码语言:javascript
复制
  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()函数:

代码语言:javascript
复制
public static class MyExtensions
{
    public static IWebElement GetParent(this IWebElement node)
    {
        return node.FindElement(By.XPath(".."));
    }
}

getA阶段出现以下代码错误:

{"no“元素:无法定位元素:{\”方法\“:\”css选择器\“,\" selector\”:\"a\"}\n (会话信息:无头chrome=81.0.4044.138)"} }

但是<a>标记肯定在该页面的这个区域内。

为了更清楚起见,这是我试图从这里获取的网址: (我试图提取他们的业务URL --纯粹是一个示例页面,纯粹是为了教育目的)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-18 22:09:42

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

代码语言:javascript
复制
var url = driver.FindElement(By.XPath("//i[contains(@class, 'sp_XObDbAMxJiG')]/following-sibling::a")).GetAttribute("href");
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61879188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档