如何专注于webdriver中的javascript动态窗口

时间:2013-01-04 05:01:06

标签: webdriver selenium-webdriver

如何在页面加载时将光标对焦于特定的输入框?

按钮为“添加新约会”,脚本为:

<input type="button" onclick="open_win()" value="add new appointment"/>

 WebElement ek = driver.findElement(By.xpath("//input[@value='add new appointment']"));
 jse.executeScript("arguments[0].click();", ek); 

这将打开一个弹出窗口。现在我需要关注窗口 Ajax用于从弹出窗口中检索信息 我尝试了各个方面,专注于新的弹出窗口。输入的txt字段是隐藏的,我尝试过的代码是:

jse.executeScript("window.focus();");

driver.switchTo().defaultContent();

driver.switchTo().activeElement().findElement(By.xpath("//*[@id='barge:bargeId:txtInput']"));

driver.switchTo().alert();

我想用以下代码专注于文本字段:

jse.executeScript("document.getElementById('barge:bargeId:txtInput')[0].setAttribute('type', 'text');");
                driver.findElement(By.xpath("//*[@id='barge:bargeId:txtInput']")).sendKeys("suxs");

这也没有奏效 即使jse.executeScript("document.title")也没有奏效 文本字段的代码

<span id="barge:bargeId:input">
  <input id="barge:bargeId:txtInput" class="ui-inputfield ui-inputtext ui-widget ui-state-default ui-corner-all inputbox doubleInputbox ui-state-hover" type="text" tabindex="" maxlength="17" accesskey="" name="barge:bargeId:txtInput" role="textbox" aria-disabled="false" aria-readonly="false" aria-multiline="false"/>
</span>

1 个答案:

答案 0 :(得分:1)

  1. 点击按钮即可轻松完成此操作:driver.findElement(By.xpath("//input[@value='add new appointment']")).click();

  2. 说“这会打开一个弹出窗口”是指实际的新窗口,新标签或对话框,如this或类似this

  3. 我认为它会打开dialog,在这种情况下,它通常只是页面上的另一个元素。在这种情况下,这应该有效:

    driver.findElement(By.xpath("//*[@id='barge:bargeId:txtInput']")).sendKeys("suxs");
    

    <强>更新
    由于这是一个新窗口,因此可以切换到新窗口described here

    driver.switchTo().window("windowName");
    

    另外,检查open_win() javascript函数的代码会很有帮助。