我正在使用 Selenium Webdriver + Java 进行自动化测试,但遇到了在 span 控件中设置值的问题。 我有一个包含客户端列表的下拉列表,默认情况下选择第一个客户端 - “Harry”,但我需要将客户端更改为默认客户端以外的客户端,例如到“西蒙”。
我尝试在这里搜索并得到以下代码:
Webelement element = driver.findElement(By.xpath("//*[@id=\"SelectedClientDirectorID_chosen\"]/a/span"));
((JavascriptExecutor)driver).executeScript("arguments[0].innerText = 'Simon'", element);
看起来没问题,找到了元素,在执行脚本时,它的 innerText 属性更改为“Simon”。 但是,一旦我单击页面上的“保存”按钮,记录就会以第一个值“Harry”保存。
我找不到为什么不保存新值的答案。
HTML 看起来像:
<div class="chosen-container chosen-container-single" style="width: 100%;" title="" id="SelectedClientDirectorID_chosen">
<a class="chosen-single" tabindex="-1">
<span class="">Harry</span>
<div><b></b></div>
</a>
<div class="chosen-drop">
<div class="chosen-search">
<input type="text" autocomplete="off">
</div>
<ul class="chosen-results">
<li class="active-result result-selected" style="" data-option-array-index="0">Harry</li>
<li class="active-result result-selected" style="" data-option-array-index="1">Simon</li>
<li class="active-result result-selected" style="" data-option-array-index="2">Robin</li>
<li class="active-result" style="" data-option-array-index="3">Brian</li>
<li class="active-result" style="" data-option-array-index="4">Rupert</li>
<li class="active-result" style="" data-option-array-index="5">Greg</li>
</ul>
</div>
</div>
感谢任何线索。
最佳答案
更改 innerText
值可能不会在您的情况下带来预期的结果。您可以尝试单击下拉菜单并选择所需的选项,就像真实用户一样:
driver.findElement(By.xpath("xpathForDropDownButton")).click();
driver.findElement(By.xpath("//li[text()='Simon']")).click();
您可能还需要等待一段时间,直到所需的元素变得可点击:
WebDriverWait wait = new WebDriverWait(driver, 15);
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("xpathForDropDownButton"))).click();
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//li[text()='Simon']"))).click();
关于java - 无法使用 Selenium Webdriver 和 Java 保存跨度控件中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42653127/