我正在尝试访问网页上的输入类型元素,但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 进行尝试。我认为这可能是因为该表,但是我不知道如何访问
答案 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应该是唯一的。