我一直在玩Selenium,並遇到過問題。如果元素不存在,我遇到問題繼續測試。如果元素不存在,則繼續測試(使用try catch)
這是我的PHP代碼
if ($this->seePageHasElement('ctl00_cphMain_ResultsPager_repPager_ctl05_liPage') != false) {
$nrOfPages = $this->seePageHasElement('ctl00_cphMain_ResultsPager_repPager_ctl05_liPage');
}
if ($this->seePageHasElement('ctl00_cphMain_ResultsPager_repPager_ctl04_liPage') != false) {
$nrOfPages = $this->seePageHasElement('ctl00_cphMain_ResultsPager_repPager_ctl04_liPage');
}
if ($this->seePageHasElement('ctl00_cphMain_ResultsPager_repPager_ctl03_liPage') != false) {
$nrOfPages = $this->seePageHasElement('ctl00_cphMain_ResultsPager_repPager_ctl03_liPage');
}
if ($this->seePageHasElement('ctl00_cphMain_ResultsPager_repPager_ctl02_liPage') != false) {
$nrOfPages = $this->seePageHasElement('ctl00_cphMain_ResultsPager_repPager_ctl02_liPage');
}
if ($this->seePageHasElement('ctl00_cphMain_ResultsPager_repPager_ctl01_liPage') != false) {
$nrOfPages = $this->seePageHasElement('ctl00_cphMain_ResultsPager_repPager_ctl01_liPage');
}
function seePageHasElement($id)
{
try {
$element = $this->webDriver->findElement(WebDriverBy::id($id));
} catch (\PHPUnit_Framework_AssertionFailedError $f) {
return false;
}
return $element;
}
這是硒服務器
There was 1 error:
1) MyTests::testSpiderThat
Facebook\WebDriver\Exception\NoSuchElementException: no such element: Unable to locate element: {"method":"id","selector":"ctl00_cphMain_ResultsPager_repPager_ctl05_liPage"}
(Session info: chrome=58.0.3029.110)
(Driver info: chromedriver=2.29.461591 (62ebf098771772160f391d75e589dc567915b233),platform=Windows NT 10.0.14393 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 40 milliseconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'
System info: host: '123123', ip: '172.18.11.210', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_77'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities [{applicationCacheEnabled=false, rotatable=false, mobileEmulationEnabled=false, networkConnectionEnabled=false, chrome={chromedriverVersion=2.29.461591 (62ebf098771772160f391d75e589dc567915b233), userDataDir=C:\Users\myComp\AppData\Local\T
emp\scoped_dir5528_32323}, takesHeapSnapshot=true, pageLoadStrategy=normal, databaseEnabled=false, handlesAlerts=true, hasTouchScreen=false, version=58.0.3029.110, platform=XP, browserConnectionEnabled=false, nativeEvents=true, acceptSslCerts=true, loc
ationContextEnabled=true, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true, unexpectedAlertBehaviour=}]
Session ID: 7220150b6e8bdc6a539de93f2771bf78
*** Element info: {Using=id, value=ctl00_cphMain_ResultsPager_repPager_ctl05_liPage}
所以現在的問題是如何正確地跳過/制止這種錯誤,如果內容不存在錯誤?我想繼續我的測試,但它只是停止...也許硒獨立版本有問題? 如果您需要任何其他信息,請讓我知道,我會提供。謝謝
我對Selenium一無所知,但我的教育猜測是,您正試圖捕獲錯誤類型的'Exception',即:'PHPUnit_Framework_AssertionFailedError'。然而,拋出的'Exception'類型是'.. \ NoSuchElementException'。所以,除非後者擴展前者,否則應該捕獲'.. \ NoSuchElementException'(也是),或者更通用的'Exception'。 –