繁体   English   中英

选择正确的CssSelector或TagName

[英]Selecting the right CssSelector or TagName

基本信息
我拥有自己开发的供个人使用的软件,因为我将其用作学习硒的方式(通过反复试验,到目前为止,我已经了解了基础知识,因为我已经学习过它)

该软件做什么
它将分析网站上列表中最活跃的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

听起来您想选择表,然后获取表中的每个符号名称。 您可以使用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选择table元素,该元素是容器的间接子级
  • /tbody选择作为表的直接子表的表主体
  • /tr[@class='quote-ticker-inited']选择具有正确类的表行,这些表行是表主体的直接子代

如果您不熟悉XPath,请参见此处此处

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM