在表wihout ID中获取元素

时间:2019-01-30 13:15:31

标签: java selenium

我正在尝试访问网页上的输入类型元素,但Selenium找不到该元素。

我已经尝试过使用xpath=//input[@name='name']

<frameset rows="100%,*" border="0" frameborder="0">
<frame src="/test/loginEntry" scrolling="AUTO" name="bannerframe" noresize="">
<html>
  <head></head>
  <body onmousedown="mouseDownEventOcurred(); onkeypress="keyPressedEventOccured();">
  <form action ="https://website.com/login" name="login" method="POST">
    <table style="width: 100%; margin: 0 auto;" cellspacing="0" cellpadding="0">
	  <tbody>
        <tr></tr>
        <tr>
           <td colspan="2">
              <table>
              <tbody>
              <tr>
              <td>Name:</td>
              <td>
               <input type="text" size="20" maxlength="20" name="name" style="text-align:left">
              </td>
              <td></td>
           </tr>
    </tbody>
    </table>
    </form>
    </body>
    </html>
    </frame>
    

我需要输入 type“ text” 元素,然后得到一个NoSuchElementException。我也尝试过使用 CSS选择器 Webdriver 进行尝试。我认为这可能是因为该表,但是我不知道如何访问

2 个答案:

答案 0 :(得分:1)

这可能是等待的问题。您需要等待该组件。尝试以下代码:

WebDriverWait wait=new WebDriverWait(driver, 20);
    wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//input[@name='name']")));

答案 1 :(得分:1)

输入元素位于框架内部,您必须首先将Webdriver的焦点切换到框架,然后才能访问输入标签。

切换到框架的代码:

driver.switchTo().frame(driver.findElement(By.xpath("//frame[contains(@src,'loginEntry')]")));  

只需确保//frame[contains(@src,'loginEntry')] xpath应该是唯一的。