为了测试应用程序的一些功能,我需要验证长字母数字字符串。并且此字符串/标签/文本(无论您在此处可以调用什么)都应该在用户给定后截断。
我在Google上搜索并尝试找到-'如何验证截断的字符串',但未找到有用的信息,因此认为问题应在此处。
挑战-我可以为长字符串写一个xpath来验证标签/标签/文本/字符串本身,但复杂的部分是字符串在被截断时最后显示很少的溺爱(例如thisIsLongStrin .....)。
我想确保当用户提供长字符串时显示这些“点”。
请记住,我在页面源代码中看不到这些“点”。
对此有任何想法或建议吗?
谢谢大家……... !!!!!!
假设字符串为:"thisIsLongString"
页面在截断后显示:"thisIsLongStri..."
这是有效的方法:
//*[@class='abc']//*[contains(text(),'thisIsLongString')]
这是有效的方法:
//*[@class='abc']//*[contains(text(),'thisIsLongStri')]
这不起作用:
//*[@class='abc']//*[contains(text(),'thisIsLongStrin...')]
(因为溺爱不是页面的一部分)
我不确定应该采用什么方法来确保这些溺爱存在。
答案 0 :(得分:2)
截断的文本是应用CSS属性text-overflow: ellipsis
的结果。要检查文本是否被截断,可以使用Selenium内置方法:
Python示例
element = driver.find_element_by_xpath("//*[@class='abc']//[text()='thisIsLongString']")
assert element.value_of_css_property("text-overflow") == "ellipsis"
P.S。当然,您还应该检查(如果不确定)字符串是否足够长以被截断,即使应用了text-overflow: ellipsis
属性,短字符串也不会被截断,因此看起来像>
assert element.value_of_css_property("text-overflow") == "ellipsis" and len(element.text) > 20
这应该检查应用的属性和字符串的长度是否大于20个字符...