有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何访问selenium中的nowrap元素

我试图从下面的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) 个答案

  1. # 1 楼答案

    我认为,当您修改实际的HTML以呈现问题中的虚拟HTML时,许多相关信息被删减。但是,快速查看属性onfocus=“doFieldFocusEvent(event)”可以确认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']")));