1

我在 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')
};

是否可以使用嘶嘶声选择器引擎来扩展它?

有人用 Java 做过,但我不知道如何让它与 JavaScript 库一起工作。


当我尝试

webdriver.Locator.Strategy.sizzle = webdriver.Locator.factory_('sizzle');

我得到:

TypeError:无法读取未定义的属性“策略”

因此,扩展并非易事...

4

1 回答 1

1

从我自己的角度来看,css2/css3 选择器可以满足您的需求。

由于糟糕的默认 api,您将使用像这样的不友好的 api driver.findElement(webdriver.By.css('input[name="textbox"]'))。没有全面的文件确实很糟糕。

我建议你使用https://npmjs.org/package/webdriver-helper来获得友好的 api 支持。

browser.element('input[name="textbox"]')并且browser.link(':contains("partial link text")')可以帮助你。

于 2013-10-18T01:20:23.897 回答