我在尝试写入selenium webdriver中的简单代码时会收到此错误,以便在Google搜索页面中输入值并输入。 以下是我的代码 - :
WebDriver driver = new FirefoxDriver(profile);
driver.manage().timeouts().implicitlyWait(40, TimeUnit.SECONDS);
driver.get("http://www.google.com");
WebElement element=driver.findElement(By.xpath("//input[@id='gs_htif0']"));
boolean b = element.isEnabled();
if (b){
System.out.println("Enabled");
}
element.sendKeys("Test Automation");
element.submit();
任何人都可以帮我解决这个问题吗?如何启用已禁用的元素?
答案 0 :(得分:1)
您使用错误的“输入”输入文字。您应该使用以下XPath:
//input[@name='q']
像
WebElement element=driver.findElement(By.xpath("//input[@name='q']"));
这个'input'元素接受输入文本就好了。
答案 1 :(得分:0)
您可以尝试在页面上运行javascript:
((JavascriptExecutor) driver).executeScript("document.getElementById('gs_htif0').disabled = false");
或
((JavascriptExecutor) driver).executeScript("arguments[0].disabled = false", element);
答案 2 :(得分:0)
请参阅,如果这可能有帮助,
WebDriver driver = new FirefoxDriver(profile);
driver.manage().timeouts().implicitlyWait(40, TimeUnit.SECONDS);
driver.get("http://www.google.com");
WebElement element = driver.findElement(By.name("q"));
if(element.isEnabled()) {
System.out.println("Enabled");
element.sendKeys("Test Automation");
element.submit();
}
答案 3 :(得分:0)
试试这个:
WebDriverWait wait = new WebDriverWait(driver, 40);
driver.get("http://www.google.com");
wait.until(ExpectedConditions.visibilityOfElementLocated(By
.xpath("//input[@id='gs_htif0']")));
driver.findElement(By.xpath("//input[@id='gs_htif0']"))
.sendKeys("Test Automation" + Keys.ENTER);
或者:
public boolean isElementPresent(WebDriver driver, By by)
{
try {
driver.findElement(by);
System.out.print("Enabled");
return true;
} catch (NoSuchElementException ignored) {
return false;
}
}
isElementPresent = isElementPresent(
driver, By.xpath("//input[@id='gs_htif0']"));
if (isElementPresent) {
element.sendKeys("Test Automation");
element.submit();
}
或者将xPath更改为名称选择器。
答案 4 :(得分:0)
如果我是正确的,那么你在firefox驱动程序中使用firebug附加组件来获取搜索框的路径。但是,萤火虫似乎提供了一个搜索框的Id不正确的路径。如果使用inspect元素选项,您可以看到差异(在下图中,您可以自己发现差异)。