【发布时间】:2019-07-19 06:35:31
【问题描述】:
我正在为网站编写自动化应用程序。因此,我需要使用没有 ID 的 HTML 元素。我听说 xPath 和 CSS Selector 不是那么快,所以我想改成 By.className()。不幸的是,我这不起作用。你可以在下面找到一个 Demo(实际的工具不是自动化 google :D)。
我正在使用 GeckoDriver 0.21.0 和 Selenium 3.13.0
WebDriver d = new FirefoxDriver();
JavascriptExecutor js = (JavascriptExecutor) d;
d.get("https://www.google.com");
WebElement we = d.findElements(By.className("gLFyf gsfi")).get(0);
js.executeScript("arguments[0].value='test';", we);
【问题讨论】:
-
似乎没有返回该特定类名的元素
-
是什么让你认为
By.className()比 CSS 选择器更快?你在哪里看到 CSS 选择器不快? “不工作”不是很具有描述性。编辑您的问题并发布实际的错误消息。你的问题标题不是问题......你也应该解决这个问题。 -
您将遇到的一个错误是“gLFyf gsfi”不是类名......它实际上是两个类名,“gLFyf”和“gsfi”,所以你不能使用它在
By.className()中,否则您将收到有关复合类名称的错误。您必须选择其中一个或使用 CSS 选择器By.cssSelector(".gLFyf.gsfi")。
标签: java selenium browser-automation