修改html元素的Java webdriver

时间:2017-01-10 17:27:22

标签: java selenium selenium-webdriver

 <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 .....

3 个答案:

答案 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()inputtextarea标签或发送键盘密钥中发送值。

您可以在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);