我在使用sencha / extjs构建的网站上有一个按钮。目前,按钮ID为savebutton-1550-btnEl,但每次加载页面时都会更改。我知道该按钮已被禁用,但出于测试目的,我想将此按钮设置为已启用,然后单击该按钮。
我如何每次都找到这个元素,然后禁用它并用Java Selenium点击它?
我猜测我必须执行一些javascript,但我很难找到javascript的目标。
答案 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}']"));