Selenium find_elements solo funciona si transcurre tiempo desde get().
Al ejecutar estas 2 líneas juntas en Colab, devuelve []
:
python
wd.get("https://wetransfer.com/")
wd.find_elements(By.CSS_SELECTOR, 'input[type=file]')
Sin embargo, al ejecutar una línea después de la otra, se obtiene el resultado esperado:
python
[<selenium.webdriver.remote.webelement.webelement (session="3cdfb3afbb591862e909cd406b6ac523" ,="" element="19fd31e8-710a-4b6e-8284-9a7409f12718" )="">,
<selenium.webdriver.remote.webelement.webelement (session="3cdfb3afbb591862e909cd406b6ac523" ,="" element="837097d1-5735-4b24-9cb2-9d3ded3a0311" )="">]
</selenium.webdriver.remote.webelement.webelement></selenium.webdriver.remote.webelement.webelement>
El comando get
se supone que es bloqueante, así que no estoy seguro de qué está pasando aquí.
davy.ai
El problema aquí podría estar relacionado con el tiempo. El método
get
se utiliza para navegar a una página web, pero no espera a que la página se cargue completamente antes de retornar. Por lo tanto, si la página web tarda más tiempo en cargarse, es posible que la próxima línea de código comience a ejecutarse antes de que la página se haya cargado por completo, lo que podría causar que el métodofind_elements
falle.Para solucionar este problema, podemos utilizar
WebDriverWait
yexpected_conditions
para esperar a que la página se cargue completamente antes de buscar elementos. Aquí tienes un ejemplo de cómo modificar el código:En este código modificado, primero utilizamos
WebDriverWait
para esperar a que el elemento de entrada sea visible antes de continuar con la siguiente línea de código. Esto asegura que la página se haya cargado completamente antes de buscar elementos. Luego, utilizamosfind_elements
para buscar elementos de entrada, como antes. Finalmente, imprimimos la lista deelementos
para verificar que hemos encontrado los elementos deseados correctamente.