我正在尝试使用此网站http://www.barnesandnoble.com/探索IDE,只需录制并播放。
1.在搜索框中输入要搜索的任何文字, 2.单击所有产品,选择书籍。
当我记录其xpath时如下
/ HTML /体[@ ID = 'CDS'] /格[@ ID = 'navContainer'] /格[@ ID = 'bnnav2011'] /格[@ ID = 'yui_3_3_0_1_1355746621091_93'] /格[@id = 'BN全局报头'] /格[@ ID = 'yui_3_3_0_1_1355746621091_92'] /格[@ ID = 'yui_3_3_0_1_1355746621091_91'] /形式[@ ID = '适量'] /格[@ ID = 'yui_3_3_0_1_1355746621091_90'] /格[@ ID = 'yui_3_3_0_1_1355746621091_89'] / UL [@ ID = 'yui_3_3_0_1_1355746621091_88'] /锂[@ ID = 'yui_3_3_0_1_1355746621091_99']
但是当我们再次播放时它会出错,找不到[错误]定位器: 我正在搜索它的xpath,它的chnaged,如下所示
/ HTML /体[@ ID = 'CDS'] /格[@ ID = 'navContainer'] /格[@ ID = 'bnnav2011'] /格[@ ID = 'yui_3_3_0_1_1355748592221_91'] /格[@id = 'BN全局报头'] /格[@ ID = 'yui_3_3_0_1_1355748592221_97'] /格[@ ID = 'yui_3_3_0_1_1355748592221_96'] /形式[@ ID = '适量'] /格[@ ID = 'yui_3_3_0_1_1355748592221_95'] /格[@ ID = 'yui_3_3_0_1_1355748592221_94'] / UL [@ ID = 'yui_3_3_0_1_1355748592221_93'] /锂[@ ID = 'yui_3_3_0_1_1355748592221_98']
注意到,它的ID正在发生变化。
任何人都能告诉我如何处理这个问题吗?
答案 0 :(得分:1)
IDE在生成XPath查询时不是很聪明,事实上,没有一个自动化工具可以计算可靠的XPath查询。为什么?原因是为了生成XPath查询,它将从顶部(在html
元素处)向下遍历树,向下到您正在与之交互的元素。
虽然这对很多事情都很好,但如果你的元素具有动态值(动态文本/ ID /名称/类,或者即使它改变位置),它也永远不会起作用。
您需要以不同的方式来获取它,因此您必须覆盖IDE为您提供的内容。
查看源代码,它们会为选择的任何类值ui-selectmenu-selected
提供。因此,当页面加载时,“所有产品”列表项(li
)将具有该类,当您更改项目时,新项目将具有该类。
所以你可以使用这个XPath:
//li[@class='ui-selectmenu-selected']
或者,这个CSS选择器:
li.ui-selectmenu-selected
或者,使用此XPath专门获取“所有产品”项。它将使用实际菜单启动一级,然后向下找到项目:
//ul[@class='ui-selectmenu']/li[text()='All Products' and not(@class='ui-selectmenu-hidden')]
答案 1 :(得分:0)
您可以尝试使用xpath:Position。似乎ID一直在变化。
答案 2 :(得分:0)
作为您问题的答案,您应该远离id并尝试使用xpath或css选择器,您可以在其中选择父级的第n个子级。 由于你是硒的新手,我想在这里指出我的笔记.- http://selenium-testing-notes.blogspot.in/ 它会帮助你解决我陷入的许多其他陷阱。 我发现帮助选择器的最好方法是使用安装了firepath的firebug。此设置可以帮助您验证xpath和css选择器。
答案 3 :(得分:0)
我看到你的问题基于这个答案首先你需要在Firefox中添加fire-path。使用firepath你可以找到xpath定位器。这对你很简单
示例:
driver.find_element_by_xpath("see![image which i have attached in this question][1] the xpath path locator details").click()
答案 4 :(得分:0)
嗨Arran我可以使用你给出的xpath单击All Products按钮(xpath = // ul [@ class ='ui-selectmenu'] / li [text()='所有产品'而不是( @类= 'UI-selectmenu隐藏')] 并获得列表。但是无法单击菜单中的图书项目。