【发布时间】:2017-06-01 13:09:02
【问题描述】:
我正在使用两种不同的方式通过 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 元素的标识符。他们应该指出同样的事情。神奇的是,第二个有效,但第一个无效。
谁能帮我解决这个问题?
更新 1:
根据@Mahipal 和@iamkenos 的要求,我使用了div,现在它显示select 和option。我认为这个问题只是由于无法找到div 而引起的,但似乎不是。请进一步帮助。
【问题讨论】:
-
您想从下拉列表中选择一个选项,或者直接访问
div。因为,在查看了您的 xpath 之后,您似乎正在尝试从下拉列表中选择一个选项。如果是这种情况,是否可以展开 div 标签,以便可以看到select控件的 html? -
查看您的代码,您正尝试点击某个
select下拉列表中的option[2]。如果是这种情况,还有其他方法可以做到这一点。另外,我建议不要过多依赖基于索引的 xpath 定位器,因为 html 设计可能会在开发阶段特别频繁地更改。正如 Mahipal 建议的那样,请展开突出显示的 div,以便我们进一步为您提供帮助。 PS。请提供实际的 sn-p,而不是屏幕截图。 -
能否提供给我们完整的DOM
-
谢谢!我已经在更新 1 中上传了消耗的 div。请帮忙。 @iamkenos
-
谢谢!我已经在更新 1 中上传了消耗的 div。请帮忙。 @Mahipal
标签: javascript selenium xpath selenium-webdriver selenium-chromedriver