附上图片以获取更多详细信息请关注::![我想在文本区域输入文字:照片中提到] [1] [1]:http://i.stack.imgur.com/sai92.png我想将文字输入文字区域但发生错误,找不到元素。我试过X路径,名称和ID,但无法执行此代码,并希望与页面上出现的其他元素一起玩,但测试目的却没有!我不知道它可以用java-executor或switch窗口处理(弹出)。下面提到的是java代码。如何处理这种情况请帮助详细说明。
Java代码:
@Test
public void CreteLead() throws InterruptedException
{
WebElement _loginName =
driver.findElement(By.xpath(OR.getProperty("username")));
_loginName.sendKeys(OR.getProperty("loginId"));
WebElement _password =
driver.findElement(By.xpath(OR.getProperty("password")));
_password.sendKeys(OR.getProperty("loginPassword"));
WebElement _login =
driver.findElement(By.xpath(OR.getProperty("login")));
_login.click();
Thread.sleep(5000);
WebElement _New =
driver.findElement(By.xpath(OR.getProperty("New")));
_New.click();
Thread.sleep(10000);
driver.findElement(By.id("btnCreateCustomer")).click();
HTML code:
<table class="tbl_top_align" width="100%" cellspacing="3" cellpadding="0">
<tbody>
<tr>
<tr>
<tr>
<tr id="trBranch">
<tr id="trAssign">
<td> Assign To*: </td>
<td>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="font-weight: normal !important;">
<div
id="ctl00_CPHPageContents_ctl00_CPHPageContents_ddlAssignedToPanel"
class="RadAjaxPanel" style="display: block;"
>
<span id="RequiredFieldValidator1"
class="error_message" style="display:none;"
>* missing</span>
</td>
<td style="vertical-align: middle !important;">
<td style="vertical-align: middle !important;"> Referral </td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td style="padding: 4px 0 5px;"> Follow-up on: </td>
<td style="padding: 4px 0 5px;">
<a id="btnFollowUp"
href="javascript:__doPostBack('ctl00$CPHPageContents$btnFollowUp','')"
>Not Scheduled</a>
</td>
</tr>
<tr>
<td> Account: </td>
<td>
<span id="ctl00_CPHPageContents_txtAccount_wrapper"
class="riSingle RadInput RadInput_Default" style="width: 160px;">
</td>
</tr>
<tr>
<td> Value: </td>
<td>
<span id="ctl00_CPHPageContents_txtAccountValue_wrapper"
class="riSingle RadInput RadInput_Default" style="width: 125px;">
</td>
</tr>
<tr>
<td>Description*:</td>
<td>
<textarea id="txtInstructions" class="schedule_notes"
style="height: 95px; width: 294px !important;" cols="20" rows="2"
name="ctl00$CPHPageContents$txtInstructions"
/>
<span id="RequiredFieldValidator2" class="error_message"
style="display:none;">* missing</span>
</td>
</tr>
<tr>
</tbody>
</table>
<div class="action_buttons">
</div>
答案 0 :(得分:5)
我遇到了与 textarea 类似的问题,如果你能发送密钥到以前的输入字段,只需使用 TAB < / strong>移动到下一个字段(textarea)并输入文本,它对我有用
driver.findElement(By.id("id_of_previous_input_field")).sendKeys(Keys.TAB,"This text will appear in textarea");
答案 1 :(得分:0)
当您点击“新建”按钮时,它会打开一个新的弹出窗口,您可以在其中输入文本。在这种情况下,您需要首先使用以下内容切换到此窗口:
SWITCHTO()。窗口(手柄)
当然问题是找到处理程序。进入弹出窗口后,您可以搜索元素并使用它们。 Here你有一些关于这个问题的有用帖子并有一些解释。
答案 2 :(得分:0)
我也有textarea问题,我只是这样做了:
element = bw.find_element_by_class_name("XXX")
element.click()
element = bw.find_element_by_class_name("XXX")
element.send_keys("Your text")
它有效;)
答案 3 :(得分:-1)
首先,在测试方法中,您需要保存父浏览器窗口的WindowHandle,如下所示。
String parentWindowId = driver.getWindowHandle(); // This should be the first line in your test method
点击“新建”按钮(打开弹出窗口)的代码后,输入以下代码。
Set<String> allOpenedWindows = driver.getWindowHandles();
if(!allOpenedWindows.isEmpty()) {
for (String windowId : allOpenedWindows) {
driver.switchTo().window(windowId);
if(driver.getPageSource().contains("Description")) //"Description" is the name of the label of your text area
{
try{
WebElement textArea= driver.findElement(By.id("txtInstructions"));
textArea.sendKeys("Enter the text here");
break;
}catch(NoSuchWindowException e) {
e.printStackTrace();
}
}
}
}