Webdriver getText没有返回任何有意义的值

时间:2017-06-28 16:39:38

标签: java selenium selenium-webdriver webdriver

我在页面中有以下html

<div class="mst_updt" style=""> 27/06/2017 12:02:31 </div> 

我正在尝试提取div之间的动态日期值:

 WebElement webElement =driver.findElement(By.cssSelector(".mst_updt"));

 String text = webElement.getText();
 System.out.println("i am text : " + text);

 System.out.println("Most read 1 : " +   webElement.getText());

 String a = driver.findElement(By.cssSelector(".mst_updt")).getText();
 System.out.println("Most read 2 : " + a);
 System.out.println(webElement);

 Boolean isTheTextPresent =  driver.getPageSource().contains("mst_updt");
 System.out.println("And did we find the string ? : " + isTheTextPresent);

你会看到我正在尝试各种方法,这里是我得到的结果,为什么我不能提取日期和时间?

我是文字:

大多数读1:

大多数阅读2:

[[FirefoxDriver:任何人的火狐(e4a9c548-6146-4685-9944-6b5d51308bff)] - &gt; css选择器:.mst_updt]

我们找到了字符串吗? :真的

应该有帮助的完整代码..

<div class="content">
    <div role="main" class="content-inner content-full-width">
        <div class="main-content">
          <section class="component-list">
             <div class="section group">
                <div class="col-lrg span-lrg_1_of_3">
    <div class="component-weekly-wrap">
        <header class="header-weekly-wrap">
            <h4 itemprop="name">
                <a class="section-title-link" href="example.com/static/survey-panel">Computer Survey Panel</a>
            </h4>
        </header>
        <article>
            <a href="example.com/static/survey-panel"><img alt="" src="/w-images/fa8edbd1-2c78-4415-9abf-334f7087ff8b/2/CTGRS17OA344213-370x229.jpg" /></a>
            <div class="col-inner weekly-wrap-details">
                    <p><p>Join our <a href="example.com/static/survey-panel" target="_blank"><strong>Research Survey Panel</strong></a> and earn an Amazon voucher for each survey you complete!</p>
<p><strong><a href="example.com/static/survey-panel">Find out more</a></strong></p></p>
            <!--<a class="btn download" href="#">More information</a> -->

            </div>
            </article>
    </div>
</div>
                <!--most read homepage updated START-->
<div class= "mst_updt" style="display:none;">
28/06/2017 12:38:15
</div>
<!--most read homepage updated END-->
<div class="col-lrg component-list-most-read span-lrg_2_of_3">
    <div class="col-inner component-most-read">
        <header class="header-most-read">
            <h4 itemprop="name">Most read</h4>
        </header>
        <div class="ol">
            <ol>
                <li>

                </li>
                <li>

                </li>
                <li>

                </li>
                <li>

                </li>
                <li>


                </li>
            </ol>
        </div>
    </div>
</div>

             </div>
         </section>
      </div>
   </div>
</div>

3 个答案:

答案 0 :(得分:1)

以下是您的问题的答案:

要找到使用class属性获取文本的特定div,必须避免。 Class属性根据需要应用于多个div标记。您可以考虑使用其他定位器,最好使用xpathcss来标识此唯一div标记,并使用getText()方法检索文本。

在这种情况下,由于您复制了单个div标签,因此很难帮助您。但是您可以考虑通过绑定父级别的xpathid属性来构造name来遍历HTML DOM,然后访问此div的class属性

答案 1 :(得分:0)

尝试使用此xpath,如果它正常工作,则表示您使用的标识符正在为您提供错误的元素。

//*[contains(text(),'27/06/2017')]

答案 2 :(得分:0)

解决方案由以下人员提供:RafałLaskowski

我可以通过cssSelector的xpath获取值,需要使用以下命令返回:getAttribute‌​("innerHTML");

s String a = driver.findElement(By.cssSelector(".mst_updt")).getAttribute‌​("innerHTML"); 

String b = driver.findElement(By.xpath("//html/body/div[3]/div[2]/div[7‌​]/div/div/section/di‌​v/div[2]")).getAttri‌​bute("innerHTML"); 

System.out.println("Most read 2 : " + a); 
System.out.println("Most read 3 : " + b);