<span data-id="tag-dist-Porto" title="Para eliminar uma das opções, faça duplo clique."></span>
这是我尝试使用webdriver修改的元素。
这是我的代码:
WebDriver driver = new HtmlUnitDriver();
driver.get("The url");
WebElement element = driver.findElement(By.xpath("//*[@data-id='tag-dist-Porto']"));
element.sendKeys("Random String");
element.submit()
我无法弄清楚发生了什么......
尝试javaExecutor解决方案后,我遇到了这些错误:
xception in thread "main" org.openqa.selenium.WebDriverException: com.gargoylesoftware.htmlunit.ScriptException: ReferenceError:"bysideWebcare_detectWindowScroll" is not defined. (http://webcare.byside.com/agent/byside_webcare.js#20)
Build info: version: '2.48.2', revision: '41bccdd', time: '2015-10-09 19:55:52'
System info: host: 'PT-PC0E5041', ip: '10.123.206.3', os.name: 'Windows 8.1', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_111'
Driver info: driver.version: HtmlUnitDriver
at org.openqa.selenium.htmlunit.HtmlUnitDriver.get(HtmlUnitDriver.java:554)
at org.openqa.selenium.htmlunit.HtmlUnitDriver.get(HtmlUnitDriver.java:530)
at testestestes.Example.main(Example.java:28)
Caused by: com.gargoylesoftware.htmlunit.ScriptException: ReferenceError: "bysideWebcare_detectWindowScroll" is not defined. (http://webcare.byside.com/agent/byside_webcare.js#20)
at .....
答案 0 :(得分:0)
sendKeys仅适用于TextBox,Rich编辑框等可编辑元素。您可以将某些内容写入
或标记。
答案 1 :(得分:0)
我不知道它与此span标记关联的网页元素,您无法使用selenium webDriver发送密钥。 如果适用于你,你可以尝试使用硒的行动类:
Fragment's
此外,您可以尝试使用Javascript,但这只是在您想要发送密钥的情况下,这是您想要执行的唯一操作
Actions builder = new Actions(driver);
Actions seriesOfActions = builder.moveToElement(element).click().sendKeys(element, "test text");
seriesOfActions.perform();
在编码之前在浏览器的控制台上试用它们。
答案 2 :(得分:0)
您正尝试使用sendKeys()
<span>
方法,这是不可能的。
您可以使用sendKeys()
在input
,textarea
标签或发送键盘密钥中发送值。
您可以在selenium中使用span
来更改JavascriptExecuter
代码值。请参阅以下代码 -
JavascriptExecutor js= (JavascriptExecutor)driver;
js.executeScript("document.getElementsByTagName('span')[0].innerHTML = 'Your_Text_Here';");
OR
WebElement element = driver.findElement(By.xpath("//span[@data-id='tag-dist-Porto']"));
JavascriptExecutor js= (JavascriptExecutor)driver;
js.executeScript("arguments[0].innerText = 'Your Text Here'", element);