【发布时间】:2019-02-15 10:46:57
【问题描述】:
我正在尝试在 Mac 上向 Selenium Webdriver 发送短信。我试图让它自动填充谷歌和搜索的搜索空白。搜索框的html如下:
<input class="gLFyf" maxlength="2048" name="q" type="text" jsaction="paste:puy29d" aria-autocomplete="both" aria-haspopup="false" autocapitalize="off" autocomplete="off" autocorrect="off" role="combobox" spellcheck="false" title="Search" value="" aria-label="Search">
所以,我想测试一下我是否可以挑出上面的元素,它对应于搜索框。所以我让它打印以下内容,看看它是否确实得到了元素:
driver.findElements(By.className("gLFyf")).toString
但是,它没有打印上面的实际 html,而是打印了
[[[ChromeDriver: chrome on MAC (a8470f41df7943e813ac6f77266ed33c)] -> class name: gLFyf]]
谁能向我解释为什么我没有得到元素?
【问题讨论】:
-
如果你刷新页面,类名和你发布的一样吗?我不认为它是。你可以试试
By.cssSelector("input[name='q']")。您将遇到的另一个问题是.findElements()返回一个元素集合。你不能在一个集合上做.toString(),你必须在一个元素上做,但它不会做你所期望的。如果你想要元素的 HTML,那么你想要driver.findElement(By.cssSelector("input[name='q']")).getAttribute("outerHTML")。注意使用.findElement()(单数)而不是.findElements()(复数) -
toString()方法不会打印 webElement 的 HTML; selenium 中的 webelement 对象与 DOM 中的节点不同。此外,您使用的是findElements而不是findElement,因此您实际上只有一个网络元素列表,可能只包含一项。
标签: java selenium selenium-webdriver webdriver outerhtml