我一直在尝试" sendkeys"到IntegerSpinnerField但它不起作用。 IntegerSpinnerField有一个id但我不能使用" sendkeys"在上面。我打开了html ID,但是IntegerSpinnerField是1中的3个小部件。所以无论如何我可以给构成IntegerSpinnerField的3个小部件赋予一个id。
HTML代码
<div __gwtcellbasedwidgetimpldispatchingfocus="true" __gwtcellbasedwidgetimpldispatchingblur="true" id="maximumfrequencySpinnerField" class="GJCAMDBBOPB" title="Enter an maximum frequency value within the allowable range. The allowed range is 776 to 787 MHz" style="width: 100px;"><div style="width: 100px;" class="GJCAMDBBAW"><table width="100%" cellpadding="0" cellspacing="0"><tbody><tr><td><input style="width: 75px;" type="text" value="" class="GJCAMDBBCV GJCAMDBBJV" id="x-auto-229-input" tabindex="0" disabled=""></td><td><div class="GJCAMDBBKV"></div><div class="GJCAMDBBNV"></div></td></tr></tbody></table></div></div>
自动生成的文本字段的ID
答案 0 :(得分:0)
不要使用Ext的应用程序的id,它们是在运行时动态生成的,每次都容易改变。所以你必须为每个元素编写一个相对的xpath。并且ExtJS元素遵循一些模式所以你必须为它编写xpaths你可以重复使用它们。
参考any-suggestions-for-testing-extjs-code-in-a-browser-preferably-with-selenium
对于您的案例和大多数输入元素,您可以使用标签找到它。标签的直接输入可能是您要查找的元素
我使用以下xpath测试了此demo site中名为Revenue %:
的微调器字段
//label[text()='Revenue %:']//following::input
上述网站的脚本。希望它有帮助
WebDriver driver = new FirefoxDriver();
driver.get("https://www.sencha.com/examples/#ExamplePlace:dashboard");
WebElement element=driver.findElement(By.xpath("//label[text()='Revenue %:']//following::input"));
element.clear();
element.sendKeys("67.67");