我使用selenium webdriver的最新版本。
Selenium无法找到元素(输入字段)。这是HTML代码:
<input id="findPath" class="pathCom" type="text" style="width: 100%;
background-color: rgb(255, 255, 255);" name="$path$conFind"
value="find" data-ctl="["TextInput"]">
我使用这样的硒代码:
driver.findElement(By.xpath(".//input[@id='findPath']")).sendKeys("find");
我也尝试通过id或css定位器查找。我在这段代码之前设置了等待:
WebDriverWait wait = new WebDriverWait(driver, 15);
wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath(" driver.findElement(By.xpath(".//input[@id='findPath']")).sendKeys("find");")));
我试过使用Selenium IDE,它找到了这个元素。我不知道webdriver有问题。 有人遇到过这样的问题吗?
答案 0 :(得分:0)
这不是在WebDriverWait
声明中使用 sendkeys()的正确方法,
你可以试试这个,
WebDriverWait wait = new WebDriverWait(driver, 15);
wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//input[@id='findPath']"))).sendKeys("find");
如果您没有使用等待变量,则可以按以下方式避免使用
new WebDriverWait(driver, 15).until(ExpectedConditions.presenceOfElementLocated(By.xpath("//input[@id='findPath']"))).sendKeys("find");
如果上述声明有效,则使用 id 肯定会有效,并且还可以提高代码的效果。
new WebDriverWait(driver, 15).until(ExpectedConditions.presenceOfElementLocated(By.id("findPath"))).sendKeys("find");
答案 1 :(得分:0)
您的代码无法正常工作的原因是因为一个非常简单的错误。您已在xpath中包含句点
您的代码 -
driver.findElement(By.xpath(".//input[@id='findPath']")).sendKeys("find");
正确的代码 -
driver.findElement(By.xpath("//input[@id='findPath']")).sendKeys("find");
让我知道它是否有效!