量角器自动化:元素的选择

时间:2017-11-08 11:45:14

标签: selenium protractor

我试图自动选择某些产品...... 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(&quot;https://shortbite.s3-eu-west-1.amazonaws.com:443/category/raw/941027c0-f6e6-434c-9ab9-66f9918c33e6.png?Signature=Zbffcvf73Nv9g2v9G3SmcYn6h24%3D&amp;Expires=1510141234&amp;AWSAccessKeyId=AKIAIUUATNKB37DELIXQ&quot;);"> </div>

请尽量保存我的理智!谢谢 大卫

3 个答案:

答案 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

单击元素