Selenium PHP fillfield()通过xpath

时间:2016-08-11 11:09:53

标签: php selenium xpath

html:

<div class="input-container" data-keyid="5"> <label> Keyword </label> <input class="keyword-input" placeholder="Enter text"></input>

我正在尝试使用PHP

填充没有id,标签,名称或值的文本框
file_put_contents('p.html', $page->getHtml());
$HTML='p.html';

$pageHtml = file_get_contents($HTML);
if (false === $pageHtml) {
    die("Error: Couldn't load page content");
}

$doc = new DomDocument();
@$doc->loadHTML($pageHtml);
$doc->preserveWhiteSpace = false;

$xpath = new DomXPath($doc);

我想使用xpath做类似下面的事情。它不起作用,但让你知道我想做什么:

$page->fillField('//input[@class="keyword-input"]', 'keyword');

错误是预期致命错误:未捕获表单字段ID |名称|标签|值 因为它只期望这四个输入中的一个而不是xpath。我不知道怎么写这个。

如何使用xpath和PHP进行填充?

1 个答案:

答案 0 :(得分:0)

检查fillField方法,看它是否与css不兼容,此方法使用id | name | label | value属性,因此需要传递属性的值。

如果你需要使用xpath,你应该在页面对象中找到一个方法,并使用它:

$page->find('xpath', '//input[@class="keyword-input"]')->setValue("keyword");

Css替代方案:

$page->find('css', 'input.keyword-input')->setValue("keyword");

要检查复选框,请使用find with check(),uncheck()表示复选框,单击()表示单选框。 确保使用右侧选择器作为复选框/单选框,它应该是输入元素。

要使用名称选中复选框,应该是:

$page->find('xpath', '//*[@class="checkbox cat_name"]')->check();

复选框应该是输入元素,如果不起作用则选择器不正常。