2014-02-11 18 views
3

如何使用java脚本执行程序设置Web元素的文本?或者还有其他方法可以做到这一点吗?使用javascript设置Web元素的文本 - Selenium Web驱动程序

<a class="selectBox selectBox-dropdown selectBox-menuShowing selectBox-active" style="width: 52px; display: inline-block; -moz-user-select: none;" title="" tabindex="0"> 
<span class="selectBox-label" style="width: 13px;">10</span> 
<span class="selectBox-arrow"/> 
</a> 

标签下有两个span元素 - 这是一个下拉菜单。用户点击span [2]并显示一个列表,其中包含数据如10,20,30,40等。用户单击数字(元素),并将其设置为span [1]的文本(在此处情况下,选择10)。我应该如何解决这个问题?

我试过Action builder,它不工作。任何其他建议?

+0

不明白你的问题。您想做什么?你可以设置文本点击第二跨度右?那么为什么你不这样做,我的意思是点击数字元素? – Husam

+0

@Husam:用户点击span [2],这只是一个箭头按钮。点击后显示一个列表。用户点击列表中的其中一个元素。 clicked元素中的文本被设置为span [1]的文本。我试着用动作制造者来做这件事 - 没有运气!任何其他建议。 – Mike

+0

提供列表的html。如果Actions类真的不起作用。您可以尝试 - **使用java脚本点击数字,java脚本不需要点击显示的元素。**。 – Husam

回答

5

如果你想改变跨度文[1]直接,你可以使用下面的代码:

String jScript = "var myList = document.getElementsByClassName(\"selectBox-label\");" 
    +"myList[0].innerHTML=\"YourNumber\";"; 
JavascriptExecutor executor = (JavascriptExecutor)driver; 
executor.executeScript(jScript); 

不过,您也可以点击使用它,你说会设置文本Java脚本数量的范围[1]。示例如下:

WebElement element = driver.findElement(By.xpath("YourNumbersXpath")); 
JavascriptExecutor executor = (JavascriptExecutor)driver; 
executor.executeScript("arguments[0].click();", element); 
相关问题