Selenium Xpath for Salesforce 页面复选框 - “选中”属性不存在
Posted
技术标签:
【中文标题】Selenium Xpath for Salesforce 页面复选框 - “选中”属性不存在【英文标题】:Selenium Xpath for Salesforce Page checkbox - “checked” attribute is not present 【发布时间】:2020-07-15 01:40:50 【问题描述】:问题:我发现难以处理 Salesforce 页面的复选框。我没有看到任何区别 在复选框的两种状态之间。状态检查和未检查都显示相同的类、属性和文本。我不确定如何处理 Salesforce 上的复选框。 请看下面的截图。我们确实有 ID,但它们是动态的,所以我不能在我的测试用例中使用 ID。
平台:JAVA、TestNG、Eclipse、Selenium
Only difference I see is when checkbox is selected then I can see below:
<span lightning-input_input="" class="slds-checkbox_faux" xpath="1">
: : after ==$0
</span>
when it's not checked the I can see below:
<span lightning-input_input="" class="slds-checkbox_faux" xpath="1">
</span>
到目前为止,我在 Salesforce 页面上所做的尝试对我没有帮助:
String rr = driver.findElement(xpath).getAttribute("checked"); // not working
isSelected(); // Not Working
document.getElementById('myInput').checked // Can not use this becasue of Dynamic ID
我在 Salesforce 页面上浏览并在本地尝试过的以下链接:
Selenium checkbox attribute "checked"
Xpath to determine checkbox "checked" attribute in Selenium IDE
Checkbox without checked attribute
【问题讨论】:
谢谢@E.Wiest,你的意思是“//span[@class='slds-checkbox_faux'][contains(.,'after')]”?刚刚检查了这个 xpath 不工作。 我的意思是contains(//span[@class="slds-checkbox_faux"],"after")
(前一个是错误的)? XPath expession 将返回一个布尔值。返回 true = 选中,返回 false = 未选中。
选择后检查带有span.slds-checkbox_faux::after
css的元素。如果元素计数返回0
,则未选中复选框。告诉我进展如何。
@supputuri 感谢您的回复。没有没有帮助我。我认为剩下的唯一解决方案是触发 SOQL 查询以查看值 ID 是否可用。
【参考方案1】:
@Mike ASP 我在 Salesforce 平台上遇到过类似的情况。尝试将 xpath 用作//*[@name='Existing_Tenant__c'] 它对我有用。如果您看到多个元素,请使用索引来获取您要检查的元素。对于前 (//*[@name='Existing_Tenant__c'])[1]。只需确保 xpath 突出显示 DOM 中的 type='checkbox' 标记即可。
下图是我的场景
【讨论】:
我的问题不仅仅是在 Salesforce 上定位元素。而是区分已检查或未检查的元素并为它们创建唯一的 Xpath。对于我在问题中突出显示的元素,DOM 没有显示这两种状态之间的差异。 不知道为什么你想要一个独特的 xpath。在我的情况下,我使用了 driver.findElement(By.xpath("(//*[@name='Private__c'])[1])").isSelected() 来返回 true(如果选择)或假(如果未选择)以上是关于Selenium Xpath for Salesforce 页面复选框 - “选中”属性不存在的主要内容,如果未能解决你的问题,请参考以下文章