Sencha禁用按钮和Selenium Webdriver

时间:2015-03-30 18:34:10

标签: java javascript selenium extjs

我在使用sencha / extjs构建的网站上有一个按钮。目前,按钮ID为savebutton-1550-btnEl,但每次加载页面时都会更改。我知道该按钮已被禁用,但出于测试目的,我想将此按钮设置为已启用,然后单击该按钮。

我如何每次都找到这个元素,然后禁用它并用Java Selenium点击它?

我猜测我必须执行一些javascript,但我很难找到javascript的目标。

3 个答案:

答案 0 :(得分:0)

要找到元素,您必须使用元素周围的部分DOM作为唯一定位器。如果没有看到你正在使用的DOM,就不可能给出更具体的答案,但你可以尝试类似的东西:

WebElement saveButton = driver.findElement(By.xpath("//button[text()='Save']");

要将元素更改为enabled,请查看以下答案:Selenium Webdriver - click on hidden elements

答案 1 :(得分:0)

另一个长期解决方案可能是与开发一起工作,看看它们是否可以构建一个独特的定位器,特别是因为这可能不是你遇到问题的唯一对象。在我的公司,我们使用“class”字段来唯一标识extjs中的对象。

答案 2 :(得分:0)

我重写了类“ AbstractComponent”:

Ext.define('Foo.overrides.AbstractComponent', {
    override: 'Ext.AbstractComponent',

    onBoxReady: function () {
      var me = this;
      var el = me.getEl();

      if (el && el.dom && me.itemId) {
        el.dom.setAttribute('data-test', me.itemId);
      }
      me.callOverridden(arguments);
    }
  });

如果在按钮配置中将“ itemId”设置为 可以通过selenium访问按钮,如下所示:

IWebElement element = webDriver.FindElement(By.XPath($"//*[@data-test='{itemId}']"));