需要通过css找到硒元素

前端之家收集整理的这篇文章主要介绍了需要通过css找到硒元素前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在< h5>中找到此链接“us states”的元素。我在craigslist试试这个。任何帮助将高度赞赏

这是url:http://auburn.craigslist.org/

<html class="">
<head>
<body class="homepage w1024 list">
    <script type="text/javascript">
    <article id="pagecontainer">
            <section class="body">
        <table id="container" cellspacing="0" cellpadding="0" 
    <tbody>
           <tr>
    <td id="leftbar">
    <td id="center">
    <td id="rightbar">
        <ul class="menu collapsible">
            <li class="expand s">
            <li class="s">
            <li class="s">
                <h5 class="ban hot">us states</h5>
                <ul class="acitem" style="display: none;">
            </li>
        <li class="s">
        <li class="s">

解决方法

在你的情况下,只使用类名称是不够的。

> By.cssSelector(“。ban”)有15个匹配的节点
> By.cssSelector(“。hot”)有11个匹配的节点
> By.cssSelector(“。ban.hot”)有5个匹配的节点

因此,您需要更多的限制才能将其缩小。下面的选项1和2可用于css选择器,1可能是最适合您需求的选项。

选项1:使用列表项的索引(CssSelector或XPath)

限制

>如果网站的结构发生变化,不够稳定

例:

driver.FindElement(By.CssSelector("#rightbar > .menu > li:nth-of-type(3) > h5"));
driver.FindElement(By.XPath("//*[@id='rightbar']/ul/li[3]/h5"));

选项2:使用Selenium的FindElements,然后对它们进行索引。 (CssSelector或XPath)

限制

>如果网站的结构发生变化,不够稳定
>不是本地选择器的方式

例:

// note that By.CssSelector(".ban.hot") and //*[contains(@class,'ban hot')] are different,but doesn't matter in your case
IList<IWebElement> hotBanners = driver.FindElements(By.CssSelector(".ban.hot"));
IWebElement banUsStates = hotBanners[3];

选项3:使用文本(仅限XPath)

限制

>不适用于多语言网站
>只适用于XPath,而不是Selenium的CssSelector

例:

driver.FindElement(By.XPath("//h5[contains(@class,'ban hot') and text() = 'us states']"));

选项4:索引分组选择器(仅限XPath)

限制

>如果网站的结构发生变化,不够稳定
>只适用于XPath,而不是CssSelector

例:

driver.FindElement(By.XPath("(//h5[contains(@class,'ban hot')])[3]"));

选项5:通过href查找隐藏列表项链接,然后遍历到h5(仅限XPath)

限制

>只适用于XPath,而不是CssSelector
>低性能
> Tricky XPath

例:

driver.FindElement(By.XPath(".//li[.//ul/li/a[contains(@href,'geo.craigslist.org/iso/us/al')]]/h5"));

猜你在找的CSS相关文章