如何从css中的webelement中找到后代Child

时间:2016-10-18 04:50:14

标签: css selenium selenium-webdriver

<div id='test' /><div>

在上面的例子中,我需要在下面的场景中找到div:

WebElement

divelement = driver.FindElement(By.css("#test"));

现在我想使用divelement变量找到没有属性的div标记。

如何使用divelement导航到div后代?

3 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点。

使用CSS选择器:

driver.findElement(By.cssSelector("#test div"))
//                                      ^  note the space.  this is CSS for "descendant".

我对

的措辞感到困惑
  

使用divelement变量找到没有属性的div标记。

但如果您指的是没有特定属性的<div>元素,则可以使用:not()伪选择器。

driver.findElement(By.cssSelector("#test div:not([id])")
// will find all <div>s that are descendants of #test that do not have an id attribute.

另一种方式是,只使用链式findElement,就像这样:

driver.findElement(By.cssSelector("#test")).findElements("div")

答案 1 :(得分:0)

divelement.findElement(By.css("div"));

这应该是要走的路。这在@Sudharsan Selvaraj上面的评论中列出

答案 2 :(得分:0)

如果您知道Xpath中使用双斜杠//并在CSS中寻找它的对应物,那么您需要使用空格。

例如:您希望CSS用灰线显示,那么它将是.image .row.width-for-gray-line

<div class="image parbase wq-GridColumn wq-GridColumn--default--12">
    <div class="component">
        <div class="row bottom-buffer">
            <div class="col-sm-12">
                <a href="https://msn.com" target="_blank">
                    <picture>
                        <img src="/image/path/cover.jpg"
                            class="image-max-width-responsive" alt="test_alt_text">
                    </picture>
                </a>
                <p class="light-txt">test_caption</p>

            </div>
        </div>
        <div class="row width-for-gray-line">
            <hr class="bottom-buffer-gray-line">
        </div>
    </div>
</div>