我正在使用PHP / MySQL / jQuery构建一个应用程序,它向用户显示一个项目列表,底部有一个空白字段来添加一个新项目。有一个Ajax模糊事件将数据保存到数据库,然后用常规行替换“新”行,其中包括您输入的文本和编辑按钮。如果单击编辑按钮,则会将文本转回输入。所有这些都有像item_n和edit_n这样的ID,其中n是数据库中的ID。我真正追求的是n。
使用Selenium(我一直专注于Web驱动程序,但我愿意使用IDE),我想创建一个新项目,然后单击编辑按钮并更改它,但我不知道编辑按钮的ID。
我已经能够在创建新行的情况下创建测试,然后使用assertTextPresent确认它在那里,但我找不到获取新行ID的方法(将是item_n)。 / p>
我尝试过使用:contains,但它总是返回一个空字符串。我尝试了一些CSS和Xpath选择器,范围从一般到特定:
$elem = $this->_session->element('css', 'div.item_row div.item_title:contains("'.$new_item.'")');
$elem = $this->_session->element('xpath', '//div:contains("'.$new_task.'")');
我也试过在列表中获取倒数第二个元素(因为最后一个是新行字段),但我真的更喜欢不必依赖于排序。
以下问题表明Selenium RC可以调用JavaScript: Selenium RC: How to check if an element has a given attribute?
我知道Web Driver成功了Selenium RC,但我不确定Web Driver是否支持如上所述的RC命令。也就是说,无论如何我试了一下。我写的用于获取ID的JavaScript函数返回null。我测试了Selenium之外的功能,所以我知道它正在工作。
我正在使用Facebook PHP Web Driver实现,但我没有嫁给它: https://github.com/facebook/php-webdriver
非常感谢任何帮助。谢谢。
答案 0 :(得分:4)
创建元素的IWebElement实例。然后获取IWebElement的id属性。下面是相同的C#代码:
IWebElement element = driver.FindElement(By.XPAth("//XpathOfTheElement"));
string id = element.GetAttribute("id")
我希望这会有所帮助