如何访问selenium

时间:2018-03-27 14:32:47

标签: java selenium selenium-webdriver webdriver

我尝试从下面的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 值的想法。

1 个答案:

答案 0 :(得分:0)

我认为在修改实际的 HTML 以在问题中呈现虚拟 HTML 时,会修剪很多相关信息。但是,快速查看属性 onfocus =&#34; doFieldFocusEvent(event)&#34; 确认 HTML DOM 包含 Javascript / Ajax调用

HTML nowrap属性

HTML nowrap Attribute属性是一个布尔属性,当它出现时,它指定<td>单元格中的内容不应该包裹

在下面的快照中,带有 nowrap 属性的<td>元素在没有 nowrap 属性的<td>元素时不会被包裹起来在没有适当宽度/空间的情况下被包裹起来。

nowrap

主要问题

我怀疑你的主要问题是纯粹的同步问题,你必须诱导 WebDriverWait

解决方案

当您留意这个特定的<td>元素时,将WebDriverwaitExpectedConditions子句一起引导为elementToBeClickable,如下所示:

WebElement elem = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@id='details']")));