Windows 10, Selenium 3.141.59, geckodriver 64-bit, 0.26, python 3.7.1
Я загружаю серийные номера в Cisco (https://cway.cisco.com/sncheck/, который перенаправляет на страницу регистрации идентификаторов Cisco на странице)обеспечить техническое обслуживание. Я пытаюсь автоматизировать эту задачу, используя код Python и селен. Я заставил мой скрипт работать, второй раз запустил его и получил сообщение об ошибке:
«selenium.common.exceptions.WebDriverException: Message: TypeError: rect is undefined» сообщение об ошибке.
Я не внес никаких изменений, и он работал нормально 3 или 4 раза. Затем несколько раз подряд выдавал ошибку «rect is undefined». Я очистил кеш браузера, перезагрузил компьютер. ,Ничто, кажется, не влияет, работает это или нет, просто кажется случайным. Вот код, который я запускаю.
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Firefox(executable_path="C:\\work\\selenium\\geckodriver.exe")
#driver = webdriver.Chrome(executable_path="C:\\work\\selenium\\chromedriver.exe")
#driver = webdriver.Ie(executable_path="C:\\work\\selenium\\IEDriverServer.exe")
driver.get("http://cway.cisco.com/sncheck/")
assert "Cisco.com" in driver.title
wait = WebDriverWait(driver,10).until(EC.url_changes("https://cway.cisco.com/sncheck/"))
elem = driver.find_element_by_name("pf.username")
actions = ActionChains(driver)
actions.move_to_element(elem).perform()
elem.clear()
elem.send_keys("myuserIDhere")
elem.send_keys(Keys.RETURN)
assert "No result Found" not in driver.page_source
wait = WebDriverWait(driver,10).until(EC.url_contains("https://identity.cisco.com/"))
elem = driver.find_element_by_name("password")
actions = ActionChains(driver)
actions.move_to_element(elem).perform()
elem.send_keys("a-real-password-here")
elem.send_keys(Keys.RETURN)
Я пытался запустить этот скрипт 5 раз с тех пор, как начал этот пост. Он возвращал "rect undefined" первые 3 раза, работал один раз, затем возвращал "rect undefined" в последний раз. Я попробовал тот же код с Chrome и драйвером Chrome, и происходит то же самое: происходит сбой 4 из 5 раз, но с РАЗНЫМ кодом ошибки:
(selenium.common.exceptions.JavascriptException: Message: javascript ошибка: невозможно прочитать свойство 'left' из неопределенного).
Затем я попробовал IE, и это сработало, включая передачу «пароля», но это было очень медленно, передавая один символ каждые 6 секунд. Затем, без каких-либо изменений в коде, он начал работать и при возврате этого кода ошибки:
(selenium.common.exceptions.NoSuchElementException: Сообщение: невозможно найти элемент с помощью селектора css == [name ="пароль"]).
Меня не волнует "исправление" этого кода, возможно, он просто плохо написан. Любая помощь будет оценена.
Стив