问题描述
我无法弄清楚为什么搜寻器无法找到该元素。这是一个简单的元素...
我尝试运行$client->refreshCrawler()
该网站的JS和AJAX内容非常繁重,所以我想知道是否可能以某种方式将内容包含在隐藏的DOM中?
这些都是我测试过的所有尝试:
try {
echo " 1 - Finding region competitions\n";
echo $this->getCrawler()->filter('div[class="non-route race-button"]')->text();
} catch (Exception $e) {
echo "1 bad\n";
echo $e->getMessage()."\n";
}
try {
echo " 2 - Finding region competitions\n";
echo $this->getCrawler()->filter('div [class="non-route race-button"]')->text();
} catch (Exception $e) {
echo "2 bad\n";
echo $e->getMessage()."\n";
}
try {
echo " 3 - Finding region competitions\n";
echo $this->getCrawler()->filter('div[class=".non-route race-button"]')->text();
} catch (Exception $e) {
echo "3 bad\n";
echo $e->getMessage()."\n";
}
try {
echo " 4 - Finding region competitions\n";
echo $this->getCrawler()->filter('div [class=".non-route race-button"]')->text();
} catch (Exception $e) {
echo "4 bad\n";
echo $e->getMessage()."\n";
}
try {
echo " 5 - Finding region competitions\n";
$a = $this->getCrawler()->findElements(\Facebook\WebDriver\WebDriverBy::className('non-route race-button'));
echo "NUM: ".count($a)."\n";
} catch (Exception $e) {
echo "5 bad\n";
echo $e->getMessage()."\n";
}
try {
echo " 6 - Finding region competitions\n";
$b = $this->getCrawler()->findElements(\Facebook\WebDriver\WebDriverBy::className('.non-route race-button'));
echo "NUM: ".count($b)."\n";
} catch (Exception $e) {
echo "6 bad\n";
echo $e->getMessage()."\n";
}
try {
echo " 7 - Finding region competitions\n";
$c = $this->getCrawler()->findElements(\Facebook\WebDriver\WebDriverBy::tagName('data-test'));
} catch (Exception $e) {
echo "7 bad\n";
echo $e->getMessage()."\n";
}
try {
echo " 8 - Finding region competitions\n";
$d = $this->getCrawler()->findElements(\Facebook\WebDriver\WebDriverBy::linkText('All Races'));
echo "NUM: ".count($d)."\n";
} catch (Exception $e) {
echo "8 bad\n";
echo $e->getMessage()."\n";
}
try {
echo " 9 - Finding region competitions\n";
return $this->getCrawler()->selectLink('All Races')->link();
} catch (Exception $e) {
echo "9 bad\n";
echo $e->getMessage()."\n";
}
try {
echo " 10 - Finding region competitions\n";
$this->getCrawler()->filterXPath('/html/body/div[5]/div[1]/div[1]/div/div[4]/div/div/main/div[2]/div[2]/div/div/div/div[5]/section[1]/div/div/div[1]/div[2]/a')->click();
} catch (Exception $e) {
echo "10 bad\n";
echo $e->getMessage()."\n";
}
但是每个人都返回The current node list is empty
解决方法
我没有等足够长的时间来更新DOM
在尝试访问元素之前,我使用了sleep(3);
,现在可以正常使用了