1

我正在 PHP/MySQL/jQuery 中构建一个应用程序,它向用户显示项目列表,底部有一个空白字段以添加新项目。有一个 Ajax 模糊事件将您的数据保存到数据库,然后将“新”行替换为常规行,其中包括您输入的文本和一个编辑按钮。如果单击编辑按钮,它会将文本转换回输入。所有这些都有像 item_n 和 edit_n 这样的 ID,其中 n 是数据库中的 ID。我真正追求的是n。

使用Selenium(我一直专注于Web Driver,但我对使用IDE持开放态度),我想创建一个新项目,然后单击编辑按钮并更改它,但我不知道ID编辑按钮。

我已经能够在创建新行的地方创建测试,然后使用 assertTextPresent 确认它在那里,但我找不到获取新行 ID 的方法(它将是 item_n)。

我试过使用: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

任何帮助将非常感激。谢谢你。

4

1 回答 1

4

创建元素的 IWebElement 实例。然后获取 IWebElement 的 id 属性。下面是相同的 C# 代码:

IWebElement element = driver.FindElement(By.XPAth("//XpathOfTheElement"));
string id = element.GetAttribute("id")

我希望这有帮助

于 2013-02-05T10:12:02.977 回答