Angularjs 量角器类名称定位器失败,但xpath定位器通过
量角器断言随xpath定位器传递,但不随类名定位器传递 有效Angularjs 量角器类名称定位器失败,但xpath定位器通过,angularjs,jasmine,protractor,Angularjs,Jasmine,Protractor,量角器断言随xpath定位器传递,但不随类名定位器传递 有效 var menu=element(by.xpath('/html/body/page/div[1]/div[3]/div[2]/div[1]/span') 通过它的断言 失败 var menu=element(by.classname('menu') 产生以下错误: 镀铬的 失败:元素不可交互 在firefox中 失败:无法将元素滚动到视图中 为什么会这样?by.classname()将通过内部量角器转换为by.css() by.cl
var menu=element(by.xpath('/html/body/page/div[1]/div[3]/div[2]/div[1]/span')代码>
通过它的断言
失败
var menu=element(by.classname('menu')代码>
产生以下错误:
镀铬的
失败:元素不可交互
在firefox中
失败:无法将元素滚动到视图中
为什么会这样?by.classname()
将通过内部量角器转换为by.css()
by.classname('menu')
将被转换为by.css('menu')
在chrome DevTools中手动尝试css选择器:.menu
,并检查找到的第一个元素。menu
与xpath相同:/html/body/page/div[1]/div[3]/div[2]/div[1]/span
by.classname()
将通过内部量角器转换为by.css()
by.classname('menu')
将被转换为by.css('menu')
在chrome DevTools中手动尝试css选择器:.menu
,并检查找到的第一个元素。menu
与xpath相同:/html/body/page/div[1]/div[3]/div[2]/div[1]/span
如果不查看DOM,我们无法推荐任何可靠的css选择器,尤其是在xpath选择器中不使用菜单
类时。
如果要将其转换为css选择器,可以尝试:
element(by.css('page>div:nth of type(1)>div:nth of type(3)>div:nth of type(2)>div:nth of type(1)>span')
或任何更短的等价物。如果不查看DOM,我们无法推荐任何可靠的css选择器,尤其是当您在xpath选择器中不使用菜单
类时。
如果要将其转换为css选择器,可以尝试:
element(by.css('page>div:nth of type(1)>div:nth of type(3)>div:nth of type(2)>div:nth of type(1)>span')代码>或任何更短的等价物。问题出在这里,我有多个元素具有相同的类名。量角器所做的是在该类中获取第一个元素。它本应该做的是把第二个但与该类相关的元素
我尝试了element.all(by.className('menu')).get(1)
,效果非常好
感谢@yong和@Kacper为我指明了正确的方向。问题出在这里,我有多个元素具有相同的类名。量角器所做的是在该类中获取第一个元素。它本应该做的是把第二个但与该类相关的元素
我尝试了element.all(by.className('menu')).get(1)
,效果非常好
谢谢你的帮助@yong和@Kacper为我指明了正确的方向。看起来他们是一样的。对于css选择器,我得到by.css(body>page>div.main>div.body>div.body-main>div>span)
。对于css选择器,我得到by.css(body>page>div.main>div.body>div.body-main>div>span)