有人可以帮我解决以下问题: 我有下拉截图,如下面的屏幕截图所示:
在页面上,HTML看起来像:
<form class="row" method="GET" action="/moderators/competitions">
<input type="hidden" name="id" value="3">
<div class="column large-2">
<label for="period"><strong> <br>Period:</strong></label>
</div>
<div class="column large-8">
<select id="period" name="period">
<option value="39">01. Jan 2019 - 31. Jan 2019 - Open</option>
<option value="38">01. Dec 2018 - 31. Dec 2018 - Open</option>
<option value="37">01. Nov 2018 - 30. Nov 2018 - Open</option>
<option value="36">01. Oct 2018 - 31. Oct 2018 - Open</option>
<option value="35">01. Sep 2018 - 30. Sep 2018 - Open</option>
<option value="34">01. Aug 2018 - 31. Aug 2018 - Open</option>
<option value="33">01. Jul 2018 - 31. Jul 2018 - Open</option>
<option value="32">01. Jun 2018 - 30. Jun 2018 - Open</option>
<option value="31">01. May 2018 - 31. May 2018 - Open</option>
<option value="30">01. Apr 2018 - 30. Apr 2018 - Open</option>
<option value="29">01. Mar 2018 - 31. Mar 2018 - Open</option>
<option value="28" selected="selected">01. Feb 2018 - 28. Feb 2018 - Frozen</option>
<option value="27">01. Jan 2018 - 31. Jan 2018 - Closed</option>
<option value="410">01. Dec 2017 - 31. Dec 2017 - Closed</option>
<option value="409">01. Nov 2017 - 30. Nov 2017 - Closed</option>
<option value="408">01. Oct 2017 - 31. Oct 2017 - Closed</option>
<option value="406">01. Sep 2017 - 30. Sep 2017 - Closed</option>
<option value="407">01. Aug 2017 - 31. Aug 2017 - Closed</option>
<option value="405">01. Jul 2017 - 31. Jul 2017 - Closed</option>
<option value="404">01. Jun 2017 - 30. Jun 2017 - Closed</option>
<option value="403">01. May 2017 - 31. May 2017 - Closed</option>
<option value="735">01. Apr 2017 - 30. Apr 2017 - Frozen</option>
<option value="402">01. Mar 2017 - 31. Mar 2017 - Closed</option>
<option value="401">01. Feb 2017 - 28. Feb 2017 - Closed</option>
我必须只选择带有文字的少数人'Frozen'Problem是冻结的单词只是可见文本的一部分,而不是整个文本。以下是我的尝试,但没有成功:
List<WebElement> competitionsFrozen = driver.findElements(By.xpath("//*[@id=\"period\"]/option[contains(text(),'Frozen')]"));
for (int k = 0; k < competitionsFrozen.size(); k++) {
System.out.println(competitionsFrozen.get(k).getText());
Select dropdown1 = new Select(driver.findElement(By.xpath("//*[@id=\"period\"]/option[contains(text(),'Frozen')]")));
dropdown1.selectByVisibleText("Frozen");
Thread.sleep(5000);
另外,下面的代码应该在选择“frozens”之后点击“Go!”按钮,几秒钟后,点击下一个名为“re-freeze”的按钮
WebElement goButton = driver.findElement(By.xpath("//form[@class='row']/div[3]/input"));
goButton.click();
Thread.sleep(5000);
WebElement reFreeze = driver.findElement(By.xpath("//form[@class='row']/div[4]/button"));
reFreeze.click();
Thread.sleep(5000);
}
请,协助。提前谢谢
答案 0 :(得分:0)
使用以下代码找到解决方案:
List<WebElement> competitionsFrozen = driver.findElements(By.xpath("//*[@id=\"period\"]/option[contains(text(),'Frozen')]"));
for (int k = 0; k < competitionsFrozen.size(); k++) {
List<WebElement> competitionsFrozen2 = driver.findElements(By.xpath("//*[@id=\"period\"]/option[contains(text(),'Frozen')]"));
System.out.println("");
System.out.println("*****");
System.out.println(competitionsFrozen2.get(k).getText());
WebElement option = competitionsFrozen2.get(k);
option.click();
BaseTest.sleepSeconds(4);
WebElement goButton = driver.findElement(By.xpath("//form[@class='row']/div[3]/input"));
goButton.click();
BaseTest.sleepSeconds(4);
WebElement reFreeze = driver.findElement(By.xpath("//form[@class='row']/div[4]/button"));
reFreeze.click();
BaseTest.sleepSeconds(4);
WebElement afterReFreeze = driver.findElement(By.xpath("//*[@id=\"period\"]/option[contains(@selected,'selected')]"));