查找包含文本的元素

时间:2017-11-14 08:44:40

标签: java xpath selenium-webdriver

有人可以帮助我解决以下问题: 我必须从下拉元素中选择 - 打开作为标题的一部分(如下面的截图所示) enter image description here

由于会在时间段内发生变化,因此使用它是无用的,并且必须使用' Open'状态(未显示,但其余状态为:冻结& 已关闭) 所以,这是我试过的xpath:

//*[@id="period"]/contains(@text, '')

对于上面我得到的测试结果是 true 。 (据我所知,它确实存在文本) 但是当添加想要的文本时

//*[@id="period"]/contains(@text, 'Open')

我得到的结果是 false ,找不到元素。 此外,搜索时:

//*[@id="period"]

我得到了结果(显示了所有句号)。

 01. Oct 2018 - 31. Oct 2018 - Open01. Sep 2018 - 30. Sep 2018 - Open01. Aug 2018 and so on ...

HTML如下:

<main class="main row">
<div class="content clearfix column medium-8">
<div class="row">
<article class="column medium-12">
<div class="t-box">
 <p></p><div class="compete">
 <a class="button primary" href="« Back to overview</a>
 <div class="promotion">
  <h2 class="promotion-header"><img src="/assets/images/system/stats/language/EN.png.pagespeed.ce.nTcGwJ7dzC.png">Top of the month</h2>

 <form class="row" method="GET" action="/compete">
 <input type="hidden" name="id" value="3">
 <div class="column large-2">
  <label for="period"><strong>&nbsp;<br>Period:</strong></label>
   </div>
   <div class="column large-8">
   <select id="period" name="period">
   <option value="39">01. Oct 2018 - 31. Oct 2018 - Open</option><option    value="38">01. Sep 2018 - 30. Sep 2018 - Open</option><option value="37">01. Aug 2018 - 31. Aug 2018 - Open</option><option value="36">01. Jul 2018 - 31. Jul 2018 - Open</option><option value="35">01. Jun 2018 - 30. Jun 2018 - Open</option><option value="34">01. May 2018 - 31. May 2018 - Open</option><option value="33">01. 

我做错了,请帮忙。

1 个答案:

答案 0 :(得分:2)

要打印所有 Open 作为标题一部分的月份,您可以使用以下代码块:

Select months = new Select(driver.findElement(By.id("period")));
List<WebElement> monthList = months.getOptions();
for(WebElement month:monthList)
    if(month.getAttribute("innerHTML").contains("Open"))
        System.out.println(month.getAttribute("innerHTML"));