2016-04-15 11 views
0

基本情報
私は私の個人的な使用のために私が開発しているソフトウェアを持っています。私はすでにSeleniumを学ぶための方法として使用しています。
それは、ウェブサイト上のリストから上位5最も活発な銘柄を分析し、ソフトウェア(非常にシンプル右にそれをプリントアウトするソフトウェアが何をするか正しいCssSelectorまたはTagNameを選択

)それを介して行ってきました?)

問題

この場合私はそれを作った瞬間、それは名前を引くように&このウェブサイトのリストから一番上のアイテムのパーセンテージ(一番上にあった)が3番目のものに変わり、実際にボタンを押したときの動作(私は説明したように)であることは、私はそれが

をしたいと思っ何が正しいのTagNameまたはいただきまし示しCssSelectorを必要とする最初の1

ことに使用したものである第三の選択肢を引っ張りますリストが1-5 EVENから変更された場合は、ウェブサイトが変更されたときに変更したいと考えています。

は、私はそれは私が私が再度開く
ウェブサイト上で24時間
リストの変更をアプリを閉じて待つ
上位5項目を示し
(私の一部に不良命名のため申し訳ありませんが)ボタン(label11_Click)を押し私は同じボタン(label11_Click)を押し
24時間後にアプリケーションが
それは新しいトップ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

私はあなたの問題を理解していません。 'data-symbol'データ属性を含むテーブルの要素を選択するのに問題がありますか? –

+0

私が理解していないのは IList movies = getTopFive.FindElements(By.CssSelector( "tbody tr")); 具体的には FindElements(By.CssSelector( "tbody tr")); –

答えて

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つのテーブル行を選択しました。

関連する問題