7

Selenium webdriver-C# を使用して、未読メールからメールの件名を取得する際に問題に直面しています。

HTMLコードは次のとおりです。

<div class="ae4 UI UJ" gh="tl">
 <div class="Cp">
  <div>
    <table id=":8e" class="F cf zt" cellpadding="0">
    <colgroup>
    <tbody>
      <tr id=":8d" class="zA zE">
       <td class="PF xY"></td>
       <td id=":8c" class="oZ-x3 xY" style="">
       <td class="apU xY">
       <td class="WA xY">
       <td class="yX xY ">
       <td id=":87" class="xY " role="link" tabindex="0">
        <div class="xS">
         <div class="xT">
          <div id=":86" class="yi">
          <div class="y6">
          **<span id=":85">
             <b>hi</b>
            </span>**
            <span class="y2">
          </div>
         </div>
        </div>
       </td>
       <td class="yf xY "> </td>
       <td class="xW xY ">
     </tr>

コンソールに「emailSenderName」を出力できますが、span タグの間にある「テキスト」(件名行、この場合は「こんにちは」) を出力できません。これが私のコードです。

 //Try to Retrieve mail Senders name and Subject
        IWebElement tbl_UM = d1.FindElement(By.ClassName("Cp")).FindElement(By.ClassName("F"));
        IList<IWebElement> tr_ListUM = tbl_UM.FindElements(By.ClassName("zE"));
        Console.WriteLine("NUMBER OF ROWS IN THIS TABLE = " + tr_ListUM.Count());
        foreach (IWebElement trElement in tr_ListUM)
        {
            IList<IWebElement> td_ListUM = trElement.FindElements(By.TagName("td"));
            Console.WriteLine("NUMBER OF COLUMNS=" + td_ListUM.Count());
            string emailSenderName = td_ListUM[4].FindElement(By.ClassName("yW")).FindElement(By.ClassName("zF")).GetAttribute("name");
            Console.WriteLine(emailSenderName);
            string text = td_ListUM[5].FindElement(By.ClassName("y6")).FindElement(By.TagName("span")).FindElement(By.TagName("b")).Text;
            Console.WriteLine(text);
        }

また、件名のテキストを含む 5 列目 (td) のタグからテキストを直接選択してみましたが (私の場合)、結果はありませんでした。

私はどこかで間違っていたのかもしれませんし、それを行う他の方法があるかもしれません。

提案してください、事前に感謝します:)

4

6 に答える 6

1

これを試して

findElement(By.cssSelector("div.y6>span>b")).getText();
于 2012-12-27T17:44:06.043 に答える