以编程方式获取子元素selenium c#

时间:2015-08-17 14:35:47

标签: c# selenium selenium-webdriver selenium-chromedriver

我想要实现的是以编程方式打开已启用并显示的网页上的第一个视频。我通过使用Xpath搜索方法并点击第一个可用的视频元素。我想要实现的是打开分隔符(视频元素)并在其内部搜索另一个分隔符,但特别是我已经点击的分隔符内部的分隔符。

这就是我现在尝试的方法:

 public void ClickOnTheProperty()
    {
        var isClicked = false;

        var properties = Driver.FindElements(By.XPath("//div[contains(@class, 'col-md-3 col-sm-3')]"));
        for (var i = 0; i < properties.Count; i++)
        {
            if (properties[i].Enabled && properties[i].Displayed)
            {
                var smallContainer =
                    properties[i].FindElements(By.XPath("//div[contains(@class, 'miniature lightingshow')]"));
                for (var j = 0; j < smallContainer.Count; j++)
                {
                    if (smallContainer[j].Displayed && smallContainer[j].Enabled)
                    {
                        var js = (IJavaScriptExecutor) Driver;
                        js.ExecuteScript("arguments[0].click()", smallContainer[i]);
                        isClicked = true;
                        break;
                    }
                }
            }
        }
        if (!isClicked)
        {
            throw new Exception("No property found");
        }
    }

有什么建议吗?如果您无法理解我的问题是什么,或者我没有很好地解释,我会尝试回答您需要的所有问题。

1 个答案:

答案 0 :(得分:1)

你的问题是XPath(不是Selenium)需要更多的“推动”来告诉它有关范围。

您的解决方案是更改您的第二个XPath:

//div[contains(@class, 'miniature lightingshow')]"

为:

.//div[contains(@class, 'miniature lightingshow')]"

.告诉XPath'在我当前的父级内搜索'。