基本信息
我有这个我开发的软件供个人使用,因为我用它作为学习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
答案 0 :(得分:0)
听起来您想要选择表格,然后在表格中获取每个符号名称。您可以使用By.XPath
和getAttribute
执行此操作。如下所示:
//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']
选择具有正确类的表行,这些行是表体的直接子代我没有测试过C#代码,但我在Chrome中测试了XPath查询,并选择了正确的5个表行。