我正在使用selenium webdriver,我正在尝试为span标签找到一个文本框,但我没有运气。我能够找到一个div id的simliar文本框,所以我猜它有作为Span ID的东西。使用xpath我生成这个:
.//*[@id='rtbPrefix']
因此,这是我创建的WebElement:
@FindBy(xpath=".//*[@id='rtbPrefix']")
WebElement txtPrefix_AddContact;
请告知我如何找到这个项目,如果我应该使用css,如果是这样,请告诉我如何找到该元素。以下是元素的信息:
<table>
<tbody>
<tr>
<td class="ContactLeftLabelCol">
<td class="ContactLeftInputCol">
<span id="rtbPrefix_wrapper" class="riSingle RadInput RadInput_Metro" style="width: 50px;" title="Enter the contact's title (Mr., Ms., Dr., etc. ">
<input id="rtbPrefix" class="riTextBox riEnabled riHover" type="text" value="" title="Enter the contact's title (Mr., Ms., Dr., etc. " size="20" name="rtbPrefix"/>
<input id="rtbPrefix_ClientState" type="hidden" name="rtbPrefix_ClientState" autocomplete="off" value="{"enabled":true,"emptyMessage":"","validationText":"","valueAsString":"","lastSetTextBoxValue":""}"/>
</span>
</td>
</tr>
根据以下说明进行更新
@FindBy(xpath = "//frame[.//input[@id = 'rtbPrefix']]")
WebElement iframe_Contacts;
public void Add_Prefix_NewContact(){
iframe_Contacts.sendKeys("Mr.");
//txtPrefix_AddContact.sendKeys("Mr.");
}
根据回复的每条指令更新了webelemnt,然后在下面是我在方法中实现的地方
public void CreateANewContact(){
NewContactClick();
base.getDriver().switchTo().frame(iframe_Contacts);
Add_Prefix_NewContact();
Add_FirstName_NewContact();
Add_MiddleName_NewContact();
Add_LastName_NewContact();
Add_Suffix_NewContact();
Add_Primary_NewContact();
Add_JobTitle_NewContact();
Add_Email_NewContact();
Add_Phone_NewContact();
Add_Mobile_NewContact();
Add_Fax_NewContact();
Add_Address_NewContact();
Add_Country_NewContact();
Add_Zip_NewContact();
Add_City_NewContact();
Add_State_NewContact();
btnSaveClose_AddContact.click();
Reporter.log("A New Contact Was Successfully Added!!!");
base.getDriver().switchTo().defaultContent();
}
答案 0 :(得分:0)
尝试:
WebDriver driver;
WebElement webElement = driver.findElement(By.id("rtbPrefix_wrapper"));
答案 1 :(得分:0)
是的,它在iframe中
你必须切换到框架的上下文,然后搜索里面的元素:
driver.switchTo().frame("name_or_id");
WebElement webElement = driver.findElement(By.id("rtbPrefix"));
如果框架上没有定义id
或name
,您可以按索引找到它:
driver.switchTo().frame(0); // switch to the first frame
或者,使用findElement
找到它:
WebElement frame = driver.findElement(By.xpath("//frame[.//input[@id = 'rtbPrefix']]");
driver.switchTo().frame(frame);