我尝试编写xpath表达式,以使我的测试不会因小的设计更改而中断。因此,我编写了自己的表达式,而不是Selenium IDE生成的表达式。
这是一个问题:
//input[@name='question'][7]
此表达式根本不起作用。名为“问题”的输入节点分布在整个页面上。他们不是兄弟姐妹。
我尝试使用中间表达式,但是也失败了。
(//input[@name='question'])[2]
error = Error: Element (//input[@name='question'])[2] not found
这就是为什么我认为Seleniun具有错误的XPath实现。
根据XPath文档,位置谓词必须按 节点
集中的位置进行过滤,因此它必须找到input
名称为的第七个'question'
。在Selenium中,这不起作用。CSS选择器(:nth-of- kind
)都没有。
我必须写一个过滤他们共同父母的表达式:
//*[contains(@class, 'question_section')][7]//input[@name='question']
这是Selenium特有的问题,还是我读错了规格?如何做一个简短的表达?
这是一个问题:
//input[@name='question'][7]
此表达式根本不起作用。
这是一个常见问题解答 。
[]
具有比更高的优先级//
。
上面的表达式选择input
带有的每个元素@name = 'question'
,这是其父元素的第7个子input
元素-
显然,未显示的文档中元素的父元素没有太多input
子元素。
使用 (注意方括号):
(//input[@name='question'])[7]
这将选择input
满足谓词条件的文档中的第7个元素。
编辑 :
认识硒的人(戴夫·亨特)建议上述表达式用硒写成:
xpath=(//input[@name='question'])[7]
返回数组中的每个第 n 个元素。 使用 Array.filter() 创建一个包含给定数组的每个第 n 个元素的新数组。 const everyNth = (arr, nth) => arr.filter((e, i) => i % nth === nth - 1); everyNth([1, 2, 3, 4, 5, 6], 2); // [ 2, 4, 6 ]
我必须找到每个数组元素的第N个nextInt。下面的代码真的很慢,因为数组元素超过40K,每个数组元素超过100万。 有没有更快的方法得到第100万个Nextint?如果是,请怎么做?
我想做一个模板,在那里我可以输入一个索引,它会给我在那个索引的类型。我知道我可以用来实现,但我想自己实现它。例如,我想这样做, ...它会给出位置的类型(因为数组是从0开始索引的)。我怎么能这么做?多谢了。
所以我从一次考试中得到了这个问题。 在单链表中,如何从尾部获得第n个节点? 这样对吗?有没有更好的解决办法?
问题内容: 我正在尝试使用By.cssSelector来捕获类c3的第n个dom元素,其结构如下: 测试我的CSS选择器时,我变得越来越困惑。此选择器正确选择c2 / c3的第二个实例: 而: 什么都不选。 更糟糕的是,将其翻译成selenium,我似乎始终没有为所有3个版本找到任何东西。有很多选择这些元素的替代方法(我可能只做XPATH),但是我对nth-of- type的缺乏了解使我发疯。谁能