23

我有输入元素,如图所示:

<input type="text" class="bg-white" id="couponCode" value="">

如何使用 casperJs 设置/填充其值

4

2 回答 2

41

使用casper.sendKeys('selector', value);

http://casperjs.readthedocs.org/en/latest/modules/casper.html#sendkeys

于 2014-04-08T14:43:51.050 回答
1

有几种不同的方法可用于完成此任务。

casper.sendKeys()除非您需要执行更复杂的操作,否则您应该使用。


casper.sendKeys()

如果您想从CasperJS 环境中设置值,并且该input元素可选地位于form元素内,那么您可以使用casper.sendKeys()

casper.sendKeys('#couponCode', 'Hello, world!');

casper.fill()

如果你想从CasperJS 环境中设置值,并且input元素元素内部form,并且包含一个name属性,那么你可以使用casper.fill()

casper.fill('#form', {
  couponCode: 'Hello, world!', // #form [name="couponCode"]
});

casper.fillSelectors()

如果您想从CasperJS 环境中设置值,并且input元素位于元素内部form,并且您想input使用 CSS3 选择器引用该元素,那么您可以使用casper.fillSelectors()

casper.fillSelectors('#form', {
  '#couponCode': 'Hello, world!', // #form #couponCode
});

casper.fillLabels()

如果您想从CasperJS 环境中设置值,并且该input元素位于元素内部form,并且包含label与文本相关联的元素,那么您可以使用casper.fillLabels()

casper.fillLabels('#form', {
  couponCode: 'Hello, world!', // #form label[text()="couponCode"] input
});

casper.fillXPath()

如果您想从CasperJS 环境中设置值,并且input元素位于元素内form,并且您想input使用 XPath 选择器引用该元素,那么您可以使用casper.fillXPath()

casper.fillXPath('#form', {
  '//*[@id="couponCode"]': 'Hello, world!', // #form #couponCode
});

casper.evaluate()

如果您想从Page DOM environment设置值,并且该input元素可选地位于form元素内,那么您可以使用casper.evaluate()

casper.evaluate(function () {
  document.getElementById('couponCode').value = 'Hello, world!';
});

注意:与 类似evaluate(),您也可以使用:evaluateOrDie()、、thenEvaluate()thenOpenAndEvaluate()(如果您想一次完成与正在执行的步骤相关的两个或多个操作)。

于 2018-07-06T22:43:01.657 回答