我试图自动选择某些产品...... Here's a screenshot
用户点击了' base'的最上一行。颜色,然后从下面生成的托盘中选择所需的颜色。
我能够毫无问题地选择基色。
element(by.xpath('html/body/main-app/kf-sidebar-app/div[1]/app-container/div/dashboard/div/div/visualise/open-interface/div/div/div[2]/div[2]/digitalbridge-category-list/div/digitalbridge-category-view[2]/div/div[1]/div/div[2]')).click();
...选择所需的颜色更令人抓狂!我得到的最接近的结果是一个"元素不可见"消息....尝试添加'等待'但没有区别。
此代码..
var EC = protractor.ExpectedConditions;
var paintSelected = element(by.xpath('.//div[@id="2386"]'));
browser.wait(EC.visibilityOf(paintSelected), 7000);
paintSelected.click();
..产生线后......
[11:27:22] W/element - more than one element found for locator By(xpath, .//div[@id="2386"]) - the first result will be used
此操作一直持续到达7000ms超时。我已经尝试过使用' first'但它没有得到认可,而且还尝试了[0],但又被认出了。
这是来自控制台......
的一行<div _ngcontent-c63="" class="item circle" id="2386" style="background-image: url("https://shortbite.s3-eu-west-1.amazonaws.com:443/category/raw/941027c0-f6e6-434c-9ab9-66f9918c33e6.png?Signature=Zbffcvf73Nv9g2v9G3SmcYn6h24%3D&Expires=1510141234&AWSAccessKeyId=AKIAIUUATNKB37DELIXQ");"> </div>
请尽量保存我的理智!谢谢 大卫
答案 0 :(得分:0)
尝试将您的选择器放入控制台,即 $ x(“。// div [@ id ='2386']”) 。 只是为了看看你是否真的有两个具有相同Id的元素
还可以查找元素并调试元素集合。
我对扩展框架所做的一件事是实现了一个高亮元素功能。
IJavaScriptExecutor js = Driver as IJavaScriptExecutor;
js.ExecuteScript("arguments[0].setAttribute(arguments[1], arguments[2])", ReferenceElement, "style",
"border: 2px solid red; border-style: dashed;");
答案 1 :(得分:0)
如果你有id,你可以在chrome或firefox控制台中检查所有可用的id元素:
$$('#2386')
$$将全部返回,一个$将返回第一个。
因为如果您有多个具有相同定位器的元素,则量角器将获得第一个元素。
如果没有办法为你提供不同的定位器,你可以通过索引获得它。
例如在您的代码中首先删除所有元素并将其分配给varible:
var allColors = $$('#2386'); // same as element.all(by.id('2386'))
或通过索引获取它们
var firstColor = $$('#2386').get(0); // or $$('#2386').first();
var secondColor = $$('#2386').get(1); // or $$('#2386').first();
答案 2 :(得分:0)
使用firepath并找出绝对xpath。 然后添加一些等待并尝试使用绝对xpath
单击元素