【发布时间】:2015-12-23 00:43:53
【问题描述】:
我正在用 Java 编写一些 Selenium 测试,以后需要通过 DOM 属性查找在 html 中不可见的元素。下面的代码尝试使用“class”属性和 DOM 属性“checked”在 google 中查找搜索栏。只有第一个对我有用,第二个因“无法定位元素”而失败。
我假设我在 xpath 上做错了,或者我没有正确理解 DOM 属性。我尝试了 DOM 中的其他几个属性,但总是得到相同的结果。我也尝试使用 cssSeletor 代替 xpath,但结果相同。
如代码所示,我使用 Chrome(使用 Windows 7)。
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
public class SeleniumTest {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "D:\\Selenium\\Drivers\\chromedriver.exe");
DesiredCapabilities caps = DesiredCapabilities.chrome();
WebDriver driver = new ChromeDriver(caps);
driver.manage().window().maximize();
driver.get("http://www.google.com");
WebElement elementByClass = driver.findElement(By.xpath("//input[@class='gsfi']"));
WebElement elementByDOM = driver.findElement(By.xpath("//input[@checked='false']"));
}
}
编辑: 如果我使用 F12 开发工具检查谷歌搜索栏,我会找到 html:
<input spellcheck="false" dir="ltr" style="border: medium none; padding: 0px; margin: 0px; height: auto; width: 100%; background: transparent url("data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw%3D%3D") repeat scroll 0% 0%; position: absolute; z-index: 6; left: 0px; outline: medium none;" aria-autocomplete="both" role="combobox" aria-haspopup="false" class="gsfi" id="lst-ib" maxlength="2048" name="q" autocomplete="off" title="Søk" value="" aria-label="Søk" type="text">
如果我检查这个元素的 DOM 属性,我可以看到属性 "checked"=true。见图片:
【问题讨论】:
-
您要查找的 html 元素是什么?当我搜索您的第二个 xpath -
//input[@checked='false']时,我根本找不到任何元素。可以分享一下html代码吗? -
您的代码看起来正确,但重要的是您的 html 代码。请问你能分享一段你尝试的html代码吗?
-
我在问题中添加了搜索框元素的html。
-
您发布了错误的 HTML 部分。你有一个文本输入,而不是一个复选框。
-
如果我单击该输入的 html,我可以在 chrome 的属性下看到属性“已选中:false”。我是否错误地查看了 DOM 属性?
标签: java selenium dom xpath css-selectors