我使用两种不同的方式来访问使用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
突出显示的是我想要找到的内容。
任何人都可以帮我吗?
更新1:
由于@Mahipal和@iamkenos需要,我花费了div
,现在它显示select
和option
。我认为这个问题只是因为无法找到div
但似乎没有找到。请进一步帮助。
答案 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']