Selenium Webdriver无法通过xPath定位元素

时间:2017-05-30 22:29:06

标签: javascript selenium xpath selenium-webdriver selenium-chromedriver

我使用两种不同的方式来访问使用Selenium webdriver (JavaScript)的Web元素。

第一种方式使用一个数字表示父div中的第三个div元素。代码是这样的:

driver.findElement(By.xpath("//div[@id='sld-layer-container']/div/div/ul/li[2]/div/div[2]/div/div[3]/select/option[2]")).click();

此代码不起作用。它返回错误:ElementNotVisibleError: element not visible: Element is not currently visible and may not be manipulated

第二种方法是使用类来标识父div中的特定div。代码是这样的:

driver.findElement(By.xpath("//div[@id='sld-layer-container']/div/div/ul/li[2]/div/div[2]/div/div[@class = 'col-md-5']/select/option[2]")).click();

如您所见,唯一的区别是xPath字符串中最后一个div元素的标识符。他们应该表明同样的事情。可悲的是,第二个有效,但不是第一个。

这是css元素的屏幕截图。 div突出显示的是我想要找到的内容。enter image description here

任何人都可以帮我吗?

更新1:

由于@Mahipal和@iamkenos需要,我花费了div,现在它显示selectoption。我认为这个问题只是因为无法找到div但似乎没有找到。请进一步帮助。 enter image description here

2 个答案:

答案 0 :(得分:1)

你可以尝试如下:

 Select select = new Select (driver.findElement(By.xpath("//div[@id='sld-layer-container']/div/div/ul/li[2]/div/div[2]/div/div[3]/select")));

 select.selectByVisibleText("PROJECT_VALUE");

答案 1 :(得分:-1)

您也可以尝试使用xpath以下...

//div[@id='featureClassList']//div[@class='col-md-5']