情况就是这样:
现在是我的问题,我能以某种方式找到每个找到的元素的唯一标识符吗?我的目标是通过使用Xpath或CSS选择器与Selenium获得相同的元素。因此,如果我能为jQuery中的元素生成一个明确的选择器,那将是最直接的。其他想法也是受欢迎的。
我需要一种自动方法来识别jQuery中的元素,这些元素可以“转换”为Selenium元素/定位器。
/编辑
更清楚:
如果我在jQuery中选择了一个元素:
webDriver.executeScript("var element = $('#myDiv input.test')");
现在,我想要这样的事情:
WebElement webElement = webDriver.executeScript("return element");
这可能吗?
答案 0 :(得分:9)
我找到了解决方案,这非常简单:
String jQuerySelector = "'#myDiv input.test'";
RenderedWebElement webElement = (RenderedWebElement) ((JavascriptExecutor) webDriver).executeScript("return $(" + jQuerySelector+ ").get(0);");
使用在Selenium中公开选择的jQuery中的元素也是如此:
String jQuerySelector = "arguments[0]";
((JavascriptExecutor) webDriver).executeScript("return $(" + jQuerySelector+ ").doSomethingInJquery();", webElement);
答案 1 :(得分:0)
不确定您的确切问题,但您可以使用html id,name,class etc.属性构建定位器。
答案 2 :(得分:0)
使用eval可以更轻松。使用[0]等索引选择器和jQuery代码,否则它将返回元素集合。
String elementLocator = "$('#btnID')[0]";
public RemoteWebElement getElementByJQueryLocator(String jQueryLocator){
JavascriptExecutor js = (JavascriptExecutor) driver;
RemoteWebElement element = (RemoteWebElement) js.executeScript("return eval(arguments[0]);", jQueryLocator);
return element;
}
RemoteWebElement webElement = getElementByJQueryLocator(elementLocator);
webElement.click();