【发布时间】:2017-08-04 23:49:27
【问题描述】:
在 selenium webdriver 中使用By 定位对象是很常见的。我目前正在使用 ByChained 选择器,我想知道有没有办法将 By 对象转换为 CSS 选择器?例如:
By selector = By.id('something');
String cssSelector = selector.toCSSselector();
// now cssSelector = "#something"
【问题讨论】:
-
您尝试实现的目标可以使用monkeypatching 来完成,但是我不确定在java 中是否可行。在python中很容易。但是,如果您可以使用从 id 或 xpath 返回 CSS 选择器的方法创建一个不同的类。那不行吗?
-
会的,但也会有更复杂的情况,比如 ByChained 等,不是那么容易写的
-
当使用
ByChained时,文档让您看起来可以使用不同的选择器。所以我的问题是,为什么需要从一个By转换为另一个?类似ByChained(By.id("someId"),By.cssSelector("#some .cssSelector")) -
ByChained表示只取第一个By,然后在其子节点上找到下一个,依此类推。我需要来自By的 CSS 选择器,因为我正在编写一个应用程序,它在 selenium 和我的测试应用程序之间放置代理并注入侦听特定事件的 js(我需要 CSS 选择器 - 这样我才能检测到事件) ,从而记录测试用例。
标签: css selenium selenium-webdriver css-selectors browser-automation