在运行时将创建“ N”个复选框,具体取决于先前屏幕的选择。
对于xpath,它是“ 1”。
//*[@id="chargedashboard"]/div[1]/span[3]/label/span[3]
如果要选择1,9和15th复选框,如何编写代码以在运行时选择。
答案 0 :(得分:0)
您可以编写一个函数click(IwebElement e){e.click();}获取webelement并对其执行点击操作。 调用时将元素的动态xpath发送给它 您可以使用硒化物或Katalon Recorder。 找出您喜欢的复选框的动态xpath(使用chropath扩展名或在DevTools元素窗口中,右键单击所需标签->复制->复制XPath)。
click(Driver.FindElement(". //*[@id="chargedashboard"]/div[1]/span[3]/label/span[3]"));
click(Driver.FindElement(". //*[@id="chargedashboard"]/div[9]/span[3]/label/span[3]"));
click(Driver.FindElement(". //*[@id="chargedashboard"]/div[15]/span[3]/label/span[3]"));
如果您将来使用它会很有帮助
IreadOnlyCollection<IWebElement> list;
list = Driver.findElements(By.XPath(". //*[@id="chargedashboard"]/div"))
使用forEach循环对其进行迭代。
答案 1 :(得分:0)
在Kantu中Selenium IDE forum是一个应该起作用的答案:https://forum.a9t9.com/t/applying-a-single-command-to-multiple-targets/670/2
您只需要确保您使用xpath而不是第1个元素获得第n个实例。这应该工作:
//*[contains(@id,“duedate_day”)][1]
//*[contains(@id,“duedate_day”)][2]
//*[contains(@id,“duedate_day”)][3]
通常,//somexpression[N]
的意思是“查找由// somexpression选择的每个节点,它是其父节点的第N个子节点。”
因此,在while循环中,您可以使用
//*[contains(@id,“duedate_day”)][${myIndex}]
,然后使用storeEval在每个循环中增加$ {myIndex}
{
"Command": "storeEval",
"Target": "${myIndex}+1 ",
"Value": "myIndex"
},