chrome - selenium python example
Obteniendo "Mensaje: h es nulo" (2)
Parece que el selenium 2.45.0 does not support ff 37
.
El registro de cambios muestra selenio 2.44 compatible con FF33. Selenium 2.45 fue lanzado alrededor del 26 de febrero de 2015, mientras que FF37 fue lanzado el 31 de marzo de 2015.
Recientemente he encontrado algo que nunca había visto antes mientras usaba selenium
.
El código (bastante simple y directo):
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.drugs.com/drug-class/laxatives.html?condition_id=&generic=0&sort=rating&order=desc")
print driver.find_element_by_tag_name("title").text
Aquí hay un rastro de la pila del error que obtengo:
Traceback (most recent call last):
File "/Users/a/p/SO/selenium_scripts/test.py", line 6, in <module>
print driver.find_element_by_tag_name("title").text
File "/Users/a/.virtualenvs/so/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 328, in find_element_by_tag_name
return self.find_element(by=By.TAG_NAME, value=name)
File "/Users/a/.virtualenvs/so/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 664, in find_element
{''using'': by, ''value'': value})[''value'']
File "/Users/a/.virtualenvs/so/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 175, in execute
self.error_handler.check_response(response)
File "/Users/a/.virtualenvs/so/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 166, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: h is null
Usando Firefox 37.0 y selenio 2.45.0.
Observaciones:
- si cambio a
webdriver.Chrome()
- No veo ningún error - si utilizo una URL diferente, por ejemplo,
https://google.com
, no veo ningún error Intenté esperar explícitamente a que los resultados de la búsqueda estén visibles antes de realizar cualquier otra acción, pero sigo recibiendo el mismo código de error que he usado:
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Firefox() driver.get("http://www.drugs.com/drug-class/laxatives.html?condition_id=&generic=0&sort=rating&order=desc") # wait for the table list to load WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "table.data-list")))
- no es fácilmente googleable, lo que probablemente significa que es específico del sitio web, pero, como se señaló anteriormente, no hay errores en Chrome
¿De dónde viene el error y qué puedo hacer para prevenirlo / corregirlo? ¿Esto significa que no puedo navegar / localizar elementos en esta página web en particular usando selenio + firefox?
Parece que para cuando la página se carga está ejecutando esta línea de código y arrojando un mensaje de error. trata de esperar hasta que la página se cargue al usar
time.sleep(200)
y mantenga esta línea de código debajo de try block como:
try:
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "table.data-list")))
except:
print("not found")