java - 无法使用 Selenium Webdriver 和 Java 保存跨度控件中的值

标签 java html selenium webdriver

我正在使用 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/

相关文章:

javascript - jQuery Mobile 内部页面问题

java - 在 HTML 文档中,使用 Java 和 Selenium 中的 xpath 查找出现在另一个 "text"之后的 "text"

testing - 从 Maven 项目创建可执行的 selenium 测试 jar

java - 如何设置Listner停止动画并向MainActivity Android发送回调

java - Spring 4.1.5 和 Tiles 3.0.5

java - 如何在构建期间修改 Java/Swift 源代码

html - Selenium 模态 xpath

不带泛型的 Java vector

javascript - 如何使 jquery 计数器使用innerHTML 中的数据

html - 将元素包裹在一个固定居中的元素周围