我正在Chrome中使用JavaSE和Selenium WebDriver。我的任务是找到一组输入字段并对其进行处理。问题是我必须按照呈现的顺序进行操作,它们可以在网页上找到。
所以我将通过XPATH找到它们,因为这就是给定网页中的工作原理。假设我在以下路径上有一组输入:... with TableA as (
select 1 as "COL1" from dual
union all select 2 from dual
union all select 3 from dual
union all select 4 from dual
union all select 5 from dual
), TableB as (
select 1 as "COL1" from dual
union all select 2 from dual
union all select 3 from dual
)
select *
from TableA
where not exists(select *
from TableB
where TableA.COL1 = TableB.COL1)
但是出于某些原因,我不能说,某些类型的输入字段(例如文本和数字)位于以下路径中:... {/form/div/div/div
问题在于,一组输入要比其他一组“更深”,因此当我使用/form/div/div
将它们保存到List<WebElement>
时,我无法真正保存它们的顺序。
我曾想用driver.findElements
查找输入,但是id名称中有一个空格,Selenium显然不喜欢该空格。在这种情况下,我不确定相对XPATH是否会有所帮助。
您的评论受到赞赏。
答案 0 :(得分:1)
我犯了一个错误,就是对XPATH的了解不够。我要寻找的是xpath表达式中的“和”操作数。如果您是像我这样的初学者,请在w3schools上阅读有关它的信息。
基本上,以下代码解决了我的问题,作为一种解决方法:
driver.findElements(By.xpath("//input[@required=''] | //select[@required='']"));