我尝试从下面的HTML访问第一个输入字段,但无法访问该字段。查找HTML详细信息如下:
<tr>
<td>....</td>
<td nowrap>
<input type="text" name="details" id="details" value size="10" onfocus="doFieldFocusEvent(event)">
<input type="hidden" id=details1 value>
</td>
我尝试过以下方法,但都返回false。
driver.findElement(By.xpath("//input[@id='details']"));
driver.findElement(By.xpath("//input[@name='details']"));
driver.findElement(By.id("details"));
driver.findElement(By.name("details"));
任何人都可以帮我解决这个问题。任何人都可以给我 nowrap 值的想法。
答案 0 :(得分:0)
我认为在修改实际的 HTML 以在问题中呈现虚拟 HTML 时,会修剪很多相关信息。但是,快速查看属性 onfocus =&#34; doFieldFocusEvent(event)&#34; 确认 HTML DOM 包含 Javascript / Ajax调用。
HTML nowrap Attribute属性是一个布尔属性,当它出现时,它指定<td>
单元格中的内容不应该包裹。
在下面的快照中,带有 nowrap 属性的<td>
元素在没有 nowrap 属性的<td>
元素时不会被包裹起来在没有适当宽度/空间的情况下被包裹起来。
我怀疑你的主要问题是纯粹的同步问题,你必须诱导 WebDriverWait 。
当您留意这个特定的<td>
元素时,将WebDriverwait与ExpectedConditions子句一起引导为elementToBeClickable,如下所示:
WebElement elem = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@id='details']")));