我在selenium-webdriver源代码中做了一些讨论,找到了一个元素定位器策略列表:
webdriver.Locator.Strategy = {
'className': webdriver.Locator.factory_('class name'),
'class name': webdriver.Locator.factory_('class name'),
'css': webdriver.Locator.factory_('css selector'),
'id': webdriver.Locator.factory_('id'),
'js': webdriver.Locator.factory_('js'),
'linkText': webdriver.Locator.factory_('link text'),
'link text': webdriver.Locator.factory_('link text'),
'name': webdriver.Locator.factory_('name'),
'partialLinkText': webdriver.Locator.factory_('partial link text'),
'partial link text': webdriver.Locator.factory_('partial link text'),
'tagName': webdriver.Locator.factory_('tag name'),
'tag name': webdriver.Locator.factory_('tag name'),
'xpath': webdriver.Locator.factory_('xpath')
};
是否可以使用sizzle选择器引擎扩展它?
某人did it in Java但我无法弄清楚如何使用JavaScript库。
当我尝试
时webdriver.Locator.Strategy.sizzle = webdriver.Locator.factory_('sizzle');
我明白了:
TypeError:无法读取未定义的属性“策略”
所以扩展......并不是一件容易的事。
答案 0 :(得分:1)
从我自己的角度来看,css2 / css3选择器可以满足您的需求。
由于默认api错误,你会使用像driver.findElement(webdriver.By.css('input[name="textbox"]'))
这样的非友好api。没有全面的文件,这确实很糟糕。
我建议您使用https://npmjs.org/package/webdriver-helper来获得友好的api支持。
browser.element('input[name="textbox"]')
和browser.link(':contains("partial link text")')
可以为您提供帮助。