我正在使用selenium webdriver来开发UI自动化项目。 在一个页面中,我在下拉列表中有一个动态元素。
这是使用selenium IDE找到的Xpath的一个示例:
driver.FindElement(By.XPath("//a[@id='ui-id-89']/strong")).Text);
ID是动态的,在此示例中为 89 。我试着用:
driver.FindElement(By.XPath("//a[contains(@id,'ui-id']"))
和
driver.FindElement(By.CssSelector("*[id^='ui-id'][id$='> strong']"))
没有任何效果,任何人都有解决方案可以帮助我吗?
这是HTML:
<div id="main" role="main">
<div class="center">
<div class="content">
<h2>Extrato Financeiro</h2>
<p></p>
<form method="post" class="search jNice" id="form-filter" name="form-filter" action="">
<fieldset >
<label for='labelcmbCodPeriodoLetivo' id='labelcmbCodPeriodoLetivo' name="labelcmbCodPeriodoLetivo" dev-comp="true" dev-id='labelcmbCodPeriodoLetivo' value="Período Letivo" dev-event="" dev-action="" >Período Letivo</label >
</fieldset>
<fieldset >
<select id='cmbCodPeriodoLetivo' name="cmbCodPeriodoLetivo" dev-comp="true" dev-id='cmbCodPeriodoLetivo' value="2801" dev-height='38px' dev-width='4' dev-height='38px' dev-event="" dev-action="" text-sel="Selecione" dev-select-link="" dev-select-codigo="" dev-select-param='' >
<option value=' ' id='cmbCodPeriodoLetivo_opt_sel0' > Selecione </option>
<option value=' ' id='cmbCodPeriodoLetivo_opt_sel1'> ---------------- </option>
<option value='{"SGLPERIODOLETIVO":"2017\/1","CODPERIODOLETIVO":"2801"}' selected id='cmbCodPeriodoLetivo_opt0' name="cmbCodPeriodoLetivo_opt0" dev-comp="true" dev-id='cmbCodPeriodoLetivo_opt0' dev-event="" dev-action="">2017/1</option>
<option value='{"SGLPERIODOLETIVO":"2016\/2","CODPERIODOLETIVO":"2713"}' id='cmbCodPeriodoLetivo_opt1' name="cmbCodPeriodoLetivo_opt1" dev-comp="true" dev-id='cmbCodPeriodoLetivo_opt1' dev-event="" dev-action="">2016/2</option>
<option value='{"SGLPERIODOLETIVO":"2016\/1","CODPERIODOLETIVO":"2616"}' id='cmbCodPeriodoLetivo_opt2' name="cmbCodPeriodoLetivo_opt2" dev-comp="true" dev-id='cmbCodPeriodoLetivo_opt2' dev-event="" dev-action="">2016/1</option>
<option value='{"SGLPERIODOLETIVO":"2015\/2","CODPERIODOLETIVO":"2396"}' id='cmbCodPeriodoLetivo_opt3' name="cmbCodPeriodoLetivo_opt3" dev-comp="true" dev-id='cmbCodPeriodoLetivo_opt3' dev-event="" dev-action="">2015/2</option>
</select>
</fieldset>
</form>
答案 0 :(得分:0)
您可以在此处使用Select方法。
Select oSelect = new Select(driver.findElement(By.id("labelcmbCodPeriodoLetivo")));
oSelect.selectByVisibleText("2016/2");
OR
您可以继续列出下拉列表中的元素
List<WebElement> elem = oSelect.getOptions();
int iSize = elem.size();
System.out.println("Size of the list is" +iSize);
for(int i=0; i <iSize;i++)
{
String sValue = oSelect.getOptions().get(i).getText();
System.out.println(sValue);
if(sValue.equals("2016/2"))
{
System.out.println("Position of the value is" +i);
oSelect.selectByIndex(i);
break;
}
}
答案 1 :(得分:0)
我使用这段代码在组件中执行某些操作:
以下是我的解决方案的源代码:
driver.FindElement(By.XPath("//form[@id='form-filter']/fieldset[2]/span[2]/input")).Clear();
driver.FindElement(By.XPath("//form[@id='form-filter']/fieldset[2]/span[2]/input")).SendKeys(Input String);
driver.FindElement(By.XPath("//body/ul/li/a")).Click();
感谢所有答案。