我需要在第7个tr中使用id="optProfile"
选择radion按钮,使用文本" Internet Users"在td / font标签中。我正在使用下面的代码,但它无法正常工作,并从第1行开始选择单选按钮。任何人都可以帮忙
<html>
<head>
<body onmousedown="infCheckMouseDown(event);" onkeydown="infCheckDownKey(event);" onbeforeunload="INFIEExit();" onload="INFsetInitialFocus();window_onload();CreateScriptingFrames();">
<form action="PEINFCommon.ASP?WCI=Genericcreen&WCE=GenericEvent" onsubmit="return false" name="Genericcreen" method="post">
<table class="TopLevelTable" align="center" width="100%" border="0">
<tbody>
<tr>
<td width="100%">
<table width="100%" border="0">
<tbody>
<tr>
<tr>
<tr>
<tr>
<tr>
<td width="100%">
<div align="center">
<center>
<table width="98%" cellspacing="0" cellpadding="0" border="0" cols="1">
<tbody>
<tr align="center">
<td align="left">
<table width="100%">
<tbody>
<tr>
<tr>
<tr>
<tr height="">
<tr height="">
<tr height="">
<tr height="">
<tr height="">
<tr height="">
<tr height="">
<tr height="">
<tr height="">
<tr height="">
<tr height="">
<tr height="">
<td width="5%">
<input id="optProfile" type="Radio" callfunction="" value="" onblur="ResetScript(this);return true;" onfocus="HighlightScript(this);" onclick="" name="" size="11">
<font class="fLabel"></font>
<br>
<input id="hidCurrentProfile" type="hidden" onblur="ResetScript(this);" onfocus="HighlightScript(this);" value="N" callfunction="" size="11" name="/Root/ACORD/InsuranceSvcRs/nk_ck_com.cc_FetchUserProfileRs/nk_ck_com.cc_SecurityDetails/nk_ck_com.cc_AvailableProfile[12]/nk_ck_com.cc_CurrentProfileInd">
<input id="hidProfile" type="hidden" onblur="ResetScript(this);" onfocus="HighlightScript(this);" value="RACINTER" callfunction="" size="11" name="/Root/ACORD/InsuranceSvcRs/nk_ck_com.cc_FetchUserProfileRs/nk_ck_com.cc_SecurityDetails/nk_ck_com.cc_AvailableProfile[12]/nk_ck_com.cc_ProfileCd">
</td>
<td>
<font class="">Internet Users</font>
</td>
</tr>
<tr height="">
<tr height="">
<tr height="">
<tr>
<tr>
<tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</center>
</div>
</td>
</tr>
<tr>
<tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</form>
</body>
</html>
</frame>
<frame id="Script" scrolling="Yes" frameborder="0" noresize="">
</frameset>
</html>
答案 0 :(得分:1)
您需要使用ancestor
代替preceding
:
//font[text()='Internet Users']/ancestor::tr[1]/td/input[@type='Radio']
这也是一个更好的做法,告诉你想要哪一个tr
- 祖先 - &gt; [1]
- 因为你想要第一个直接祖先
您是否有理由不使用单选按钮的ID?
WebElement wElement = wDriver.findElement(By.Id("optProfile"));
答案 1 :(得分:0)
您可以使用以下XPath
//tr[.//font[text()='Internet Users']]//input[@id='optProfile']
此xpath会查找包含tr
标记的font
,其中包含文字&#34;互联网用户&#34;然后使用id =&#39; optProfile&#39;
答案 2 :(得分:0)
您可以使用preceding
,如下所示 -
By.xpath("//font[contains(text(),'Internet Users')]/preceding::input[@id='optProfile']")
答案 3 :(得分:0)
我会尝试这样的事情
List<WebElement> trs = driver.findElements(By.cssSelector("table > tr"));
for (WebElement tr : trs)
{
List<WebElement> fonts = tr.findElements(By.tagName("font"));
if (!fonts.isEmpty() && fonts.get(0).getText().trim().equals("Internet Users"))
{
tr.findElement(By.id("optProfile")).click();
break;
}
}
您没有在HTML代码段中显示TABLE
标记,因此您可能需要在初始CSS选择器中更具体。基本上,这段代码循环遍历TR
寻找&#34;互联网用户&#34;在FONT
标记中。找到后,单击带有id=optProfile
的单选按钮。
如果您要在HTML代码段中发布TABLE
标记,我可以帮助使用CSS选择器。
修改1:更改了代码,以解决某些TR
不包含FONT
标记的情况。
答案 4 :(得分:0)
感谢大家的帮助。我真的很感激。它使用下面的代码
WebElement trs = GlobalVar.wDriver.findElement(By.xpath("//font[text()='Internet Users']/ancestor::tr[1]"));
trs.findElement(By.id("optProfile")).click();