我如何从网页元素获得定位器值
How can I get the locator value from a webelement?
我想从javascript中的selenium元素中获得选择器的值。
如果我有对象:var el = browser.driver.findElement(by.id('testEl'));
我想获得文本'testEl'并在其他地方使用它。我不关心选择器类型是什么(通过id,通过css等),只关心文本是什么。
在protractor中,我可以这样做:console.log(el.locator().value);
这将返回文本'testEl'。
但是只有selenium非量角器选择器,我被告知。value()不是一个函数。
是否有任何方法拉出这个定位器/选择器值?
编辑:目标:从selenium webElement 获取定位符文本
的用法:对于getVisibleElement
这样的函数的情况:工作在一个页面,那里可以有一个特定的选择器的未知数量的元素,有些隐藏,有些不是(但他们上面的区域隐藏,没有隐藏的标签在元素的这个特定部分的工作),我想得到只是可见的。
在量角器:function getVisibleElementByPageObject(protractorWebElement){
var allElementsOfSelector = element.all(by.css(protractorWebElement.locator().value));
var displayedElement = allElementsOfSelector .filter(function(elem) {
return elem.isDisplayed('cannot find' + ' ' + protractorWebElement.locator().value);
}).first();
return displayedElement ;
}
var exampleEl = $('[name="test"]');
var visibleExampleEl = getVisibleElementByPageObject(exampleEl);
我想获得定位器,这样如果我改变选择器是什么,我只需要在一个地方改变它-声明元素的页面对象。
我可以使用var来存储字符串,并在任何时候声明一个元素或尝试使用类似上面的东西时传递它,但这只是意味着使用设置页面对象的新标准。如果像上面的protractor那样访问selenium中的定位器,将会非常方便。
您不需要从webElement中获取定位器,您应该在第一次使用它来查找元素时就已经拥有它了。如果你的页面对象不是这样设置的,那你就做错了。
在webdriver.js中,他们展示了这个例子:
* var link = element.findElement(firstVisibleLink);
*
* function firstVisibleLink(element) {
* var links = element.findElements(By.tagName('a'));
* return webdriver.promise.filter(links, function(link) {
* return links.isDisplayed();
* }).then(function(visibleLinks) {
* return visibleLinks[0];
* });
* }
所以你应该能够:
var firstElement = function(locator) {
return browser.driver.findElement(locator);
};
var firstVisible = function(locator) {
var elements = browser.driver.findElements(locator);
return browser.driver.promise.filter(elements, function(el) {
return el.isDisplayed();
}).then(function(visibleElements) {
return visibleElements[0];
});
};
var testLocator = by.css('[name="test"]');
var E1 = firstElement(testLocator);
var E1v = firstVisible(testLocator);
相关文章:
- 如何通过选择器元素将图像添加到javascript下拉警报消息中
- stickyfloat无法处理绝对定位的元素
- 在IE9中使用jQuery.change定位select元素
- 如何检查日期选择器和时间选择器元素是否使用JQuery/Javascript设置
- 如果元素在容器外部,是否可以相对于容器以绝对定位来定位该元素
- 组合的量角器定位器
- jQuery在使用css定位的元素上调整大小;无法在chrome中正确调整大小
- 使用 Twitter 按钮定位父元素
- 找不到定位器Javascript
- Protractor:有没有办法在之前定位的元素上使用element.all
- 使用Raphael.js可以相对定位一个元素,然后将其偏移一个绝对单位
- 在商店定位器谷歌地图api中的商店面板中添加新字段
- 如何在相对定位的元素内获取鼠标的坐标
- 我可以使用什么来生成元素定位器的名称
- 无法使用量角器的绑定定位器定位元素
- 第二,第三,第四,…使用CSS定位器定位量角器中的第八个元素
- 如何在量角器中找到元素定位器
- 我如何从网页元素获得定位器值
- 如何使用量角器定位器定位子元素
- 量角器自定义定位器无法定位元素