我有一个带有下拉列表的Google搜索栏,选项在UL下,而在li下是实际的 . 我无法检索li的数据字段,而我能够检索计数 . 尝试过List元素并通过它循环,但没有运气 . 所有选项的下拉都不可见 . 我必须使用Selenium Web驱动程序打印与li相关的 Headers .
以下是我的尝试:
ul class = classname> xxx - 2天前的GSA
wb.findElement(By.xpath( “<>”))点击(); List items = html_list.findElements(By.tagName(“li”)); System.out.println(“元素的大小是”items.size()); for(WebElement item:items){html_list.sendKeys(Keys.DOWN); //模拟视觉运动wb.manage() . timeouts() . implicitlyWait(1000,TimeUnit.SECONDS);的System.out.println(item.getText()); }
2 回答
假设#1:在第1行单击后,您不等待页面加载. li 元素在DOM中,但它们未完全加载 . 您可以通过在第1行和第2行之间引入延迟来测试该假设 . 我有代码用于等待页面加载,但具体依赖于JavaScript框架(例如jQuery,AngularJs),加载微调器实现和浏览器readystate . 我的状态逻辑看起来像这样:
Hypthosis#2:文本节点很复杂 . 当文本节点编码复杂格式时,我遇到方法getText()失败以返回文本 . 我通过调用以下内容来解决这个问题:
需要注意的是getTextFromElementsTextNodes()可能会返回非ASCII字符,因此我执行以下操作:
我终于可以检索li下的选项了 . 这就是我所做的,它适用于(WebElement MyListOptions:listOfLiTags){