【发布时间】:2021-11-23 18:07:18
【问题描述】:
这个问题已被问过很多次,但似乎没有一个答案有效。我试图简单地在谷歌首页(https://google.com)上找到搜索栏。如果看inspector,你可以清楚地看到,搜索栏的名字是“q”。
但是,我得到了例外:
"Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to locate element with name: q"
当我执行以下代码时:
package pack;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
public class Klasse {
public static void main(String[] args) {
WebDriver driver = new HtmlUnitDriver();
driver.get("https://www.google.com/");
driver.findElement(By.name("q"));
}
}
当这不起作用时,我尝试了以下方法:
- 将其更改为“By.id("q")”
- 将值更改为“输入”
- 将其更改为“By.className("gLFyf gsfi")
然后我在互联网上搜索并发现了多个修复程序,其中包括:
- 使用 WebDriverWait 和 ExpectedCondition 等待元素可见
- 查找,如果有问题的元素在框架或 iframe 内(我不能 在给定的 google 示例中查找)
所有这些对我都没有用。
我什至从这个问题的解决方案中复制了代码,但找不到它: Selenium webdriver click google search
我唯一总是改变的是使用 HtmlUnitDriver 而不是 ChromeDriver 或 FirefoxDriver 等,因为我需要它在具有不同浏览器的设备上运行。也许这会导致问题? 如果这确实是问题所在,那么我该如何独立于浏览器呢?
【问题讨论】:
-
我尝试了相同的代码,它对我来说工作得很好。尝试在 chrome 驱动中运行,看看发生了什么
-
@Nandan A 这很奇怪。为什么它不能在另一台电脑上运行?无论如何,我刚刚尝试了 ChromeDriver,它给了我另一个错误消息。这次是“线程“main”中的异常 java.lang.IllegalStateException:驱动程序可执行文件的路径必须由 webdriver.chrome.driver 系统属性设置;”。尽管我认为 ChromeDriver 只适用于......好吧 Chrome。但是,无论浏览器如何,我都希望能够使用它,因此 htmlUnitDriver.
-
放个调试点试试..
-
驱动 = 新的 HtmlUnitDriver(); driver.get("google.com/"); driver.findElement(By.name("q")).sendKeys("Test"); Thread.sleep(1000); System.out.println("Success");
-
@Nandan A 好吧,下面的代码在任何方面都没有什么不同(我确实尝试过,但它抛出了相同的异常)。对于您的其他评论,恐怕我不知道如何使用调试工具。你确定这是我的安装问题还是什么?如果有帮助,我可以提供 pom.xml 文件。
标签: java selenium selenium-webdriver selenium-grid htmlunit-driver