对于自动化,我使用selenium和JAVA。
我遇到了一个绊脚石--我们的开发人员没有将ID分配给元素,JFS为其分配了自己的ID,但是ID是动态的,并且一直在变化。
此外,xpath和css选择器还包含动态id。
我似乎有一些使用包含的方法,首先,但似乎无法得到正确的方法,当我检查我的元素时,我得到了下面的
<button type="button" class="ui-datepicker-trigger ui-button ui-widget ui-
state-default ui-corner-all ui-button-icon-only" aria-label="Show Calendar"
aria-haspopup="true" role="button" aria-disabled="false"><span class="ui-
button-icon-left ui-icon ui-icon-calendar"></span><span class="ui-button-
text">ui-button</span></button>
xpath - //[@id="j_idt67:j_idt69:j_idt70:j_idt100:j_idt101:calendar"]/button
css selector = #j_idt67\3a j_idt69\3a j_idt70\3a j_idt100\3a j_idt101\3a
calendar > button如果有人能帮助和建议你如何定位这个元素,并确保它不会改变,这将有很大的帮助,如果你需要更多的信息,让我知道,就像我说的自动化新技术一样。
发布于 2018-04-10 19:38:52
假设您的webdriver被称为“驱动程序”,我将使用以下xpath
WebElement button = driver.findElement(By.xpath("//button[@aria-label='Show Calendar']"));这样做的目的是试图找到一个不会改变的属性,并且在理想情况下是唯一的。"aria-label“似乎是这样一个属性,但是很明显,您只显示了页面HTML的一个片段,因此您必须验证它是唯一的。
发布于 2018-04-10 18:58:14
试试这个css选择器:
button.ui-datepicker-trigger[aria-label='Show Calendar']看看它是否只匹配一个元素。Bellow是Java代码:
driver.findElement(By.cssSelector("button.ui-datepicker-trigger[aria-label='Show Calendar']"));我的一些建议:永远不要试图通过它的可见文本来定位web元素,因为这是网络中最易变的东西。
https://sqa.stackexchange.com/questions/33040
复制相似问题