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: 未定義のプロパティ 'Strategy' を読み取れません

したがって、拡張するのは簡単ではありません...

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 に答える