2017-06-23 78 views
0
for (let n = 0; n < someNumber; n++){ 
    try { 
    driver.get(url[n]); 
    driver.findElement(By.css("selector")); 
    } catch (err){ 
    console.log(url[n] + "did not load"); 
    } 
} 

我試圖循環瀏覽Javascript中的網頁。我正在尋找頁面上的元素。如果我找不到該元素,我希望它記錄URL並繼續循環。問題是我的代碼只停在findElement處,並且會停止執行。它永遠不會到達我的catch塊。我剛剛得到的錯誤如下:Selenium JavaScript在異常後繼續循環

NoSuchElementError: no such element: Unable to locate element: {"method":"css selector"

我在做什麼錯?

回答

1

您正在使用錯誤的selector,如果你想找到使用cssSelector,那麼你應該寫這樣的元素:

driver.findElement(By.cssSelector("Location of your WebElement")); 
Example : 
driver.findElement(By.cssSelector("input[id=email]")); 

在地方:driver.findElement(By.css("selector"));

findElement將拋出如果您正在搜索的元素不存在,則返回錯誤。 如果只有一個元素您正在尋找那麼你應該寫findElement或如果有很多元素存在然後使用findElements

+0

讓我知道它是否有效? –

+0

這是在JavaScript中,而不是Java。 JavaScript的Selenium定位器的CSS正確地工作,我寫它的方式。 – qaNoob

0

這個錯誤已經出現,因爲你使用無效的定位器。您的定位器應該是cssSelector而不是css

改變這一行driver.findElement(By.css( 「選擇」))driver.findElement(By.cssSelector( 「選擇」))和你的程序將如預期工作。

+0

這是在JavaScript中,而不是Java。這是JavaScript中用於定位CSS的正確語法。 – qaNoob