Selenium,Java:在Safari和Firefox上的文本框中输入值

时间:2016-02-18 10:21:42

标签: javascript java firefox selenium safari

我可以在Chrome中使用Actions在文本中输入文字的唯一方法。但是,这同样适用于SafariFirefox

应用程序中intput的代码如下所示:

<div id="5712825281899484" class="location-input ace_editor ace-tm">
<textarea class="ace_text-input" wrap="off" autocorrect="off" autocapitalize="off" spellcheck="false" style="opacity: 0; height: 16px; width: 7.2px; left: 45px; top: 0px;"/>
<div class="ace_gutter">
<div class="ace_layer ace_gutter-layer ace_folding-enabled" style="margin-top: 0px; height: 180px; width: 41px;">
<div class="ace_gutter-cell " style="height: 16px;">1</div>
</div>
<div class="ace_gutter-active-line" style="top: 0px; height: 16px;"/>
</div>
<div class="ace_scroller" style="left: 41px; right: 0px; bottom: 0px;">
<div class="ace_content" style="margin-top: 0px; width: 444px; height: 180px; margin-left: 0px;">
</div>

以下是我用于识别输入的代码,这适用于Chrome:

@FindBy(xpath = "//div[@class='ace_content']//div[2] /child::div[@class='ace_active-line']")
    WebElement txtLocation;

我在Chrome中使用了操作,我可以输入值:

Actions action = new Actions(webDriver);
action.moveToElement(txtLocation);
action.click();
action.sendKeys(location).build().perform();

在Firefox中,&#34;动作&#34;不工作:selenium只是继续执行而不输入文本,并且不报告错误。

但是,在Safari中使用&#34; Actions&#34;它给了我这个错误:

org.openqa.selenium.WebDriverException: Unknown command: {"id":"60ej2zi96iqs","name":"mouseMoveTo","parameters":{"element":":wdc:1455640284141"}} (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 4 milliseconds

JAVASCRIPT 我也在Safari和Firefox中尝试了javascriptexecutor,但仍然没有运气。这就是javascript中代码的样子:

JavascriptExecutor jsExecutor = (JavascriptExecutor) webDriver;
tempWebElement = webDriver.findElement(By.xpath("//div[@class='ace_layer ace_text-layer']"));
jsExecutor.executeScript("document.getElementsByClassName('ace_line').value = '"+ location + "';");

上面的代码没有输入文本,在Selenium中运行时不会抛出任何错误。

花了很多时间试图解决这个问题。任何帮助都是有用的。

Selenium version: 2.48.2

2 个答案:

答案 0 :(得分:0)

试试这个:

String xpath = "//div[@class='ace_content']//div[2] /child::div[@class='ace_active-line']";
String inputValue = //whatever you want to input

FirefoxDriver driver = new FirefoxDriver();
driver.findElement(by.xpath(xpath)).sendKeys(inputValue );

答案 1 :(得分:0)

我认为这是firefox浏览器的问题,因为Firefox会自动更新到最新版本。因此,我建议您卸载最新的浏览器版本并安装Firefox旧版本,如38.0。