我一直在尝试为我工作的公司制作一个网络爬虫,以便结合使用mink扩展。我过去做过类似的事情,但不同的是,现在我试图抓取的页面是在angularjs中构建的。
这似乎在我的xpath选择器中导致一个问题,它无法找到我在DOM中请求的元素。
为了确保我有正确的xpath并仔细检查它我也使用chrome(扩展名)的Xpath Helper
。
我尝试使用的功能是:
/**
* @Then I login
*/
public function login()
{
$page = $this->getSession()->getPage();
$username = $page->find('xpath', "//*[@id='inputEmail']/self::INPUT");
$password = $page->find('xpath', "//*[@id='inputPassword']/self::INPUT");
if ($username == null && $password == null) {
echo "nothing found";
}
else{
$username->setValue('username');
$password->setValue('password');
}
}
在我的.feature
文件中,我能够访问登录页面,并通过“看到”dom中的一些文本来检查我在那里验证它是否正常工作,但是当我尝试填写上面字段中的值时,我收到错误。
我想这是一个角度问题,它创建DOM元素的方式导致我的xpath无法找到我需要的字段,但我想不出为这个工作。
当然使用像Protractor
这样的JS框架可以是一个解决方案,但我想留在PHP中,因为它更容易维护我正在使用的团队。
任何想法都会受到欢迎。
几点想法: