如何使用 Selenium Java 定位元素
How to locate the element using Selenium Java
<input name="txtAnswer" class="box1" id="txtAnswer" type="text" maxlength="20">
我的代码:
driver.findElement(By.name("txtAnswer")).sendKeys("green");
要找到所需的元素,您可以使用以下任一方法 :
使用cssSelector
:
driver.findElement(By.cssSelector("input#txtAnswer[class^='box'][name='txtAnswer']")).sendKeys("green")
使用xpath
:
driver.findElement(By.xpath("//input[starts-with(@class, 'box') and @id='txtAnswer'][@name='txtAnswer']")).sendKeys("green")
更新
当您看到错误无法定位元素时,您需要为 元素引入 WebDruverWait可点击,您可以使用以下任一解决方案:
使用cssSelector
:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input#txtAnswer[class^='box'][name='txtAnswer']"))).sendKeys("green")
使用xpath
:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[starts-with(@class, 'box') and @id='txtAnswer'][@name='txtAnswer']"))).sendKeys("green")
Id 和 class 是网络元素的两个属性。使用唯一(一个)id 来标识 web 元素,并使用 class、标签名称等通用属性来标识 web 元素。
所以用 id 属性编写 xpath 会给你唯一的匹配。
答案:driver.findElement(By.id("txtAnswer")).sendKeys("green");
<input name="txtAnswer" class="box1" id="txtAnswer" type="text" maxlength="20">
我的代码:
driver.findElement(By.name("txtAnswer")).sendKeys("green");
要找到所需的元素,您可以使用以下任一方法
使用
cssSelector
:driver.findElement(By.cssSelector("input#txtAnswer[class^='box'][name='txtAnswer']")).sendKeys("green")
使用
xpath
:driver.findElement(By.xpath("//input[starts-with(@class, 'box') and @id='txtAnswer'][@name='txtAnswer']")).sendKeys("green")
更新
当您看到错误无法定位元素时,您需要为 元素引入 WebDruverWait可点击,您可以使用以下任一解决方案:
使用
cssSelector
:new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input#txtAnswer[class^='box'][name='txtAnswer']"))).sendKeys("green")
使用
xpath
:new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[starts-with(@class, 'box') and @id='txtAnswer'][@name='txtAnswer']"))).sendKeys("green")
Id 和 class 是网络元素的两个属性。使用唯一(一个)id 来标识 web 元素,并使用 class、标签名称等通用属性来标识 web 元素。 所以用 id 属性编写 xpath 会给你唯一的匹配。
答案:driver.findElement(By.id("txtAnswer")).sendKeys("green");