исключение ссылки на элемент staleelement в selenium webdriver для VBA

#vba #selenium-webdriver #selenium-chromedriver

#vba #selenium-webdriver #selenium-chromedriver

Вопрос:

Пожалуйста, помогите, я пытаюсь запустить код VBA с помощью драйвера selenium chrome.

Моя цель —

 Line 1:select a Xpath(control) and enter a value 
Line 2:Click on the value that comes below 
Line 3:Clear Xpath(control) value 
Line 4: select a Xpath(control) and enter a value
Line 5:Click on the value that comes below 
Line 6:Clear Xpath(control) value 
  

Строка 5 выдает ошибку Ошибка времени выполнения 10 исключение ссылки на элемент staleelement (элемент, который нужно щелкнуть, имеет то же значение пути, что и в строке 2)

 Sub Test()

    Dim driver As ChromeDriver

    Dim a1 As String
    Dim b1 As String

    Set driver = New ChromeDriver
    driver.Get ("https:mytestenvironment.in")

    a1 = "Short ID"
    b1 = "CHL Type of leave"

    driver.FindElementByXPath("//*[@id='export-custom-columns-autocomplete']/ul/input").SendKeys a1 '- Line1
    On Error GoTo -1
    driver.FindElementByXPath("//*[@id='export-custom-columns-autocomplete']/ul/div/li[2]").Click '-Line 2
    On Error GoTo -1
    driver.FindElementByXPath("//*[@id='export-custom-columns-autocomplete']/ul/input").Clear '-Line 3
    On Error GoTo -1
    driver.FindElementByXPath("//*[@id='export-custom-columns-autocomplete']/ul/input").SendKeys b1 '-Line 4
    On Error GoTo -1
    driver.FindElementByXPath("//*[@id='export-custom-columns-autocomplete']/ul/div/li[2]").Click '-Line - 5
    On Error GoTo -1
    driver.FindElementByXPath("//*[@id='export-custom-columns-autocomplete']/ul/input").Clear '-Line - 6

End Sub
  

Однако после отладки и повторного запуска он работает нормально

Я попытался добавить инструкцию об ошибке, но безрезультатно

Пример кода:

 Sub Test()
    
    Dim driver As ChromeDriver
    
    Dim a1 As String
    Dim b1 As String
    
    Set driver = New ChromeDriver
    driver.Get ("https:mytestenvironment.in")
    
    a1 = "Short ID"
    b1 = "CHL Type of leave"
    
    driver.FindElementByXPath("//*[@id='export-custom-columns-autocomplete']/ul/input").SendKeys a1
    On Error GoTo -1
    driver.FindElementByXPath("//*[@id='export-custom-columns-autocomplete']/ul/div/li[2]").Click
    On Error GoTo -1
    driver.FindElementByXPath("//*[@id='export-custom-columns-autocomplete']/ul/input").Clear
    On Error GoTo -1
    driver.FindElementByXPath("//*[@id='export-custom-columns-autocomplete']/ul/input").SendKeys b1
    On Error GoTo -1
    driver.FindElementByXPath("//*[@id='export-custom-columns-autocomplete']/ul/div/li[2]").Click
    On Error GoTo -1
    driver.FindElementByXPath("//*[@id='export-custom-columns-autocomplete']/ul/input").Clear
    
End Sub



 
  

Ответ №1:

Исключение устаревшего элемента означает, что элемент присутствует на странице, но экземпляр драйвера не может с ним взаимодействовать

Есть 2 способа решить эту проблему 1. Обновить страницу 2.Do цикл до тех пор, пока элемент не будет нажат

Комментарии:

1. Если я обновлю страницу, элемент будет потерян, поскольку шаг 2 — это тот, который делает видимым элемент на шаге 3, и цикл также не работает