选择正确的CssSelector或TagName

时间:2016-04-15 14:29:48

标签: c# selenium

基本信息
我有这个我开发的软件供个人使用,因为我用它作为学习Selenium的一种方式(通过试验和错误,到目前为止我知道基础知识,因为我已经完成了它)

软件的功能
它将从网站上的列表中分析前5个最活跃的股票并将其打印到软件上(很简单吧?)

问题

此时我已经做到了这一点,它取了一个名字&从这个网站上的列表中的顶级项目的百分比(曾经是最重要的一个),然后它变为第三个,当我实际按下按钮时它做的是(正如我刚才解释的)它拉出了第三个选项这是以前的第一个

我想做什么

我需要正确的TagName或CssSelector,如果它发生变化,它会在1-5列表中显示最新内容,我希望在网站更改时更改

实施例

我按下按钮(label11_Click)(抱歉我的命名错误)
它显示了前5项 我关闭应用程序并等待24小时 列表在网站上发生变化 我24小时后重新开启申请 我按下相同的按钮(label11_Click)
它显示了新的前5项

private void label11_Click(object sender, EventArgs e)
{
    var getTopFive = new FirefoxDriver();
    getTopFive.Navigate().GoToUrl("https://www.tradingview.com/");

    IList<IWebElement> movies = getTopFive.FindElements(By.CssSelector("[data-symbol='NASDAQ:SIRI']")); 


    for (int i = 0; i < 1; ++i)
    {
        activeTextBox.Text = movies[i].Text;

    }

}

private void activePan_Paint(object sender, PaintEventArgs e)
{
    Label scan = new Label();
    scan.Text = "Test";
}

private void pictureBox2_Click(object sender, EventArgs e)
{
    var homePage = new FirefoxDriver();
    homePage.Navigate().GoToUrl("http://www.vargadevelopments.com");
}

private void label1_Click(object sender, EventArgs e)
{
    this.Close();
}

}

}

列表:https://embed.gyazo.com/75b4901627b3b7fc1736cc3d333a1995.png
https://embed.gyazo.com/60e4766238cc6668805b4c53947dfff7.png

1 个答案:

答案 0 :(得分:0)

听起来您想要选择表格,然后在表格中获取每个符号名称。您可以使用By.XPathgetAttribute执行此操作。如下所示:

//Select the table rows that have the symbol names
var tableRows = getTopFive.FindElements(By.XPath("//*[@class='three-colomns-colomn active-quotes quote-tabbed-widget']//table/tbody/tr[@class='quote-ticker-inited']"));

//Loop through each row returned and get the full symbol name
foreach(var tableRow in tableRows )
{
    //Get the full symbol name (eg. NASDAQ:ABC)
    string fullSymbol = tableRow.getAttribute("data-symbol");

    //Separate the market and symbol name
    string market = fullSymbol.Substring(0,fullSymbol.indexof(":") - 1);
    string symbol = fullSymbol.Substring(fullSymbol.indexof(":") + 1);
}

快速了解XPath正在选择的内容:

  • //div[@class='three-colomns-colomn active-quotes quote-tabbed-widget']选择最活跃的表的容器
  • //table选择作为容器的间接子元素的表元素
  • /tbody选择表格的直接子表格
  • /tr[@class='quote-ticker-inited']选择具有正确类的表行,这些行是表体的直接子代

如果您不熟悉XPath,请参阅herehere

我没有测试过C#代码,但我在Chrome中测试了XPath查询,并选择了正确的5个表行。