Como puedo manejar un error en la carga de una foto con selenium

espero que me puedan ayudar a corregir este codigo. lo que quiero hacer es que cuando no se encuentra la foto1.jpg, se agregue para que se cargue la ruta manualmente mediante un input, pero no me sale

driver.find_element(By.XPATH,"/html/body/main/div/div/form/fieldset[2]/div[2]/div[1]/ul/li[1]/div").click() #Aqui se realiza un click en el elemento para cargar las fotos con selenium. time.sleep(3) #Se espera 3 segundos para que se abra la ventana autoit.win_active("Carga de archivos")   #aqui se activa la ventana de carga que en mi caso se llama "Carga de archivos"  autoit.control_send("Carga de archivos","Edit1",r"C:\Users\USUARIO\Desktop\CARPETA\FOTOSDECARPETA\foto1.jpg") #Aqui se carga la ruta de la foto, que en mi caso no existe autoit.control_send("Carga de archivos","Edit1","{ENTER}") #Aqui se apreta enter y se sube la foto.  ###### HE PROBADO DE ESTA MANERA PERO NO ME SALE ####             while True:                 try:                     autoit.win_active("Carga de archivos")                     autoit.control_send("Carga de archivos","Edit1",r"C:\Users\USUARIO\Desktop\CARPETA\FOTOSDECARPETA\foto1.jpg")                     autoit.control_send("Carga de archivos","Edit1","{ENTER}")                     time.sleep(1)                     break                 except:                     driver.find_element(By.XPATH, "/html/body/main/div/div/form/fieldset[2]/div[2]/div[1]/ul/li[1]/div").click()                     time.sleep(2)                     autoit.win_active("Carga de archivos")                     input_fotos = input("Escriba la ruta de la foto aqui: ")                     pass                     autoit.control_send("Carga de archivos","Edit1",input_fotos)                     autoit.control_send("Carga de archivos","Edit1","{ENTER}")          

Subir Imagen Con Codeigniter y Ajax – No me carga

estaba siguiendo un curso de codeigniter – pero decidí salirme del camino y cambiar algunas cosas como lo que es agregar ajax al proyecto – entonces mi problema es el siguiente:

Mi facebook : https://www.facebook.com/0101114100d

1- en mi primer proyecto(se recargaba la pagina)si podía guardar mi imagen, pero al cambiar a ajax ya no puedo guardarla y nose por que.

2- quisiera subir 5 imágenes, investigue algo, pero si no soluciono el primero problema, no puedo entrar al otro – ajunto mi codigo. Cabe aclarar que todo es bd

Mi controlador con el que guardo y actualizo

 public function admin_saveproducto($  product_id = null) {     //echo json_encode($  product_id);     if ($  product_id == null) {         //Creamos el producto         $  data['producto'] = $  data['codigoPro'] = $  data['estado'] = $  data['categoria'] =         $  data['moneda'] = $  data['tipoCamb'] = $  data['precioCom'] = $  data['preciVen'] =          $  data['descripcion'] = "";         //Acccion         $  data['title'] = "Registrar Producto";         $  data['boton_title'] = "Registrar";     } else {         // editamos el producto         $  product = $  this->Product->find($  product_id);         $  data['producto'] = $  product->producto;         $  data['codigoPro'] = $  product->codigoPro;         $  data['estado'] = $  product->estado;         $  data['categoria'] = $  product->categoria;         $  data['moneda'] = $  product->moneda;         $  data['tipoCamb'] = $  product->tipoCamb;         $  data['precioCom'] = $  product->precioCom;         $  data['preciVen'] = $  product->preciVen;         $  data['descripcion'] = $  product->descripcion;         $  data['title'] = "Actualizar Producto";         $  data['boton_title'] = "Actualizar";     }     if ($  this->input->post()) {          //El siguiente codigo hace referencia a la importacion validation         //Orden :: nombre del campo :: nombre con el que se muestra el error ::Reglas de validaciones         $  this->form_validation->set_rules('producto', 'Producto', 'required|min_length[4]|max_length[100]');         $  this->form_validation->set_rules('codigo', 'Codigo', 'required|min_length[2]|max_length[20]');         $  this->form_validation->set_rules('estado', 'Estado', 'required');         $  this->form_validation->set_rules('categoria', 'Categoria', 'required');         // $  this->form_validation->set_rules('moneda', 'Moneda', 'required');         $  this->form_validation->set_rules('tipocambio', 'T.Cambio', 'required');         $  this->form_validation->set_rules('preciocompra', 'P.Compra', 'required');         $  this->form_validation->set_rules('precioventa', 'P.Venta', 'required');         //  $  this->form_validation->set_rules('image', 'Imagen', 'required');         $  this->form_validation->set_rules('descripcion', 'Descripcion', 'max_length[500]');         //salvar nuestro post, pero antes verificamos que nuestros datos cumplen con todas las reglas         if ($  this->form_validation->run()) {             //Nuestro form es valido             $  save = array(                 'producto' => $  this->input->post('producto'),                 'codigoPro' => $  this->input->post('codigo'),                 'estado' => $  this->input->post('estado'),                 'categoria' => $  this->input->post('categoria'),                 // 'moneda' => $  this->input->post('moneda'),                 'tipoCamb' => $  this->input->post('tipocambio'),                 'precioCom' => $  this->input->post('preciocompra'),                 'preciVen' => $  this->input->post('precioventa'),                 'descripcion' => $  this->input->post('descripcion'),             );             //Registrar             if ($  product_id == null) {                  if ($  product_id = $  this->Product->insert($  save)) {                     echo json_encode('exito-insert');                     //exit;                 } else {                     echo json_encode('error-insert');                     exit;                 }                 //Actualizat             } else {                if($  this->Product->update($  product_id, $  save)){                    echo json_encode("exito-actualizo");                }else{                echo json_encode("exito-no-actualizo");}                // echo json_encode($  this->Product->update($  product_id, $  save));             }             //Cargar Imagen             $  this->upload($  product_id, $  this->input->post('producto'));             // }else{             //                   //echo json_encode('Error al guardar');         } else {             echo json_encode(validation_errors());             exit;         }       } else {         // Llamamos a nuestra funcion(helper) que se encuentra en (helper/Product_helper)         $  data["data_estado"] = estado();         $  data["data_categoria"] = categoria();         $  data["data_moneda"] = moneda();         $  view["body"] = $  this->load->view("admin/admin/saveproduct", $  data, TRUE);         // $  view["body"] hace referencia a la variable contenida en el template body         //esta vista es de contenido de la variable body(admin/template/body) definido en el template siguiente:          $  this->parser->parse("admin/template/body", $  view);     }      //Cargar Imagen  } 

-Aqui la funcion de guardado – y redimensionamiento de la imagen

 private function upload($  product_id, $  product) {      $  image = "image"; //Nombre del input image     //Nuevo metodo     $  product = clean_name($  product);      //Configuracion de carga     $  config['upload_path'] = 'uploads/productos'; //ruta     $  config['file_name'] = $  product; //nombre del archivo     $  config['allowed_types'] = 'gif|jpg|png';     $  config['max_size'] = 5000;     $  config['overwrite'] = TRUE;     /* $  config['max_width']         = 1024;       $  config['max_height']        = 768; */     //cargamos la libreria     $  this->load->library('upload', $  config);      if ($  this->upload->do_upload($  image)) {         //se cargo la imagen         //Datos del upload         $  data = $  this->upload->data();          $  save = array(             'img1' => $  product . $  data["file_ext"]         );         //llamamos a la funcion upload(system/model/) y cargamos la imagen         $  this->Product->update($  product_id, $  save);         //Redimencinar imagenen         $  this->resize_image($  data['full_path'], $  product . $  data["file_ext"]);     } }  //Funcion para Redimencionar Imagen function resize_image($  path_image) {      $  config['image_library'] = 'gd2';     $  config['source_image'] = $  path_image;     $  config['maintain_ratio'] = TRUE;     // $  config['create_thumb']     = FALSE;     $  config['width'] = 500;     $  config['height'] = 500;      $  this->load->library('image_lib', $  config);     $  this->image_lib->resize(); } 

¿Por qué no se carga la informacion en mi select que mando desde el controlador?

Tengo dos select, que se cargan al entrar a la pagina, la consulta que llena mi segundo combo “claveSuc”, recibe como parámetro una clave, que es la clave que yo tengo que recuperar de lo que se elija en el combo 1 “claveAf”, por lo cual tengo el siguiente código en mi jsp, la funcion “getClave” obtiene ese valor y lo mando a mi controlador

<script type="text/javascript"> 	$  (document).ready(function(){ 		 		document.getElemnetById('claveSuc').disabled=true; 		 		 		$  ('#claveAf').change(function(){ 			var valor = $  ('#claveAf').val(); 			getClaveSuc(valor); 			if(valor >="1"){ 			 $  ('#claveSuc').attr('disabled', false); 			} 		});   	}); 	 	function getClaveSuc(value){ 		var dataString = "value="+ value; 		$  .ajax({ 			url: "/admin/registro?"+value, 			type: 'POST', 			data: dataString,  			dataType: 'json', 			success: function(data, textStatus, XmlHttpRequest){ 				if(data != null){    					console.log("exitoso"); 				} 			}, 			error: function(XmlHttpRequest, textStatus, errorThrown){ 				console.log("error"); 			} 		}); }  </script>  <div class="form_Group"> <form:select id="claveAf" class="Select" name="claveAf" path="claveAf"> 	<option value="">Seleccionar</option> 	<form:options items="$  {afor}" itemValue="clave" itemLabel="descripcion"/> </form:select> </div>  <div class="form_Group"> <form:select id="claveSuc" class="Select" name="claveSuc" path="claveSuc"> 	<option value="">Seleccionar</option> 	<form:options items="$  {sucursales}" itemValue="clave" itemLabel="descripcion"/> </form:select> <input id="seleccion" name="seleccion" type="hidden"> </div>

Este método de mi controlador es el que lanza la pagina y carga los combos, como al inicio no tengo un valor en la variable “value” que es donde se almacena la clave del combo 1, agregue la condición sino truena por null, y una vez que yo elegí una opción del combo 1, ya entra a la condición y trae la informacion correspondiente a esa clave, lo imprimo por consola, pero en mi combo 2 “claveSuc” ya no se pinta nada, ya no carga las opciones que debe de mostrar, y en la consola del navegador se ve que entra a la función del ajax, pero cae en “error”

@RequestMapping(value="/admin/registro", method = {RequestMethod.GET,RequestMethod.POST}) 	public ModelAndView registrar(@RequestParam(value="value",required=false) String value) { 		ModelAndView model = new ModelAndView("/registro", "formRegistro", new Registro()); 		RespuestaServicio respuesta = new RespuestaServicio(); 		try{ 			model = utileria.agregarAforModel(model,utileria.obtenerComboAf(servicio.obtenerAfor())); 			if(value != null){ 				model = utileria.agregarSucModel(model,utileria.obtenerComboSuc(servicio.obtenerSuc(value))); 			} 		 		}catch(Exception e){ 		 log.error("se presento un problema"): 		} 	    model = utileria.agregarRespuesta(model, respuesta); 		return model; 	}

por que si ya me trae la informacion con la clave que recupere del combo 1, no se carga nada en mi combo 2, por que pasa eso? o como más lo puedo hacer?

Por qué no carga mis eventos de un archivo externo en JavaScript

Encontré una pregunta en ingles acerca de un problema de métodos pero ninguno en español y referente al titulo que menciono. Espero que resuelvan algunas dudas. Este es un archivo app.js externo ubicado entre los<head><script src="app.js"></scritp></head> que lo único que hace es pintar un “Hola Mundo” al index.html principal por medio de una acción del click.

document.getElementById("boton").addEventListener("click", function(){ document.getElementById("text").innerHTML = "Hello World";});

Al momento de cargar(F5) la pagina se observa un error en consola de Chrome:

Uncaught TypeError: Cannot read property ‘addEventListener’ of null

y algo parecido en Firefox:

TypeError: document.getElementById(…) is null

Carga automática de web con alteraciones programadas en local

Hay alguna manera de poder hacer que una web eCommerce se cargue en un navegador con los precios cambiados? La idea es poder acceder a esa web desde mi ordenador y que sus precios me aparezcan con una regla que yo les aplico, de esta manera no necesito estar usando calculadora para calcular los precios de mi proveedor, así puedo navegar directamente en su web viendo todos los precios convertidos. Gracias

Multiselect no carga datos

estoy realizando una aplicacion en vue y he realizo el siguiente multiselect para recuperar los datos :

<div class="col-4">                 <label class="container">Seleccionar Casa</label>                  <multiselect                     class="selectpicker"                      v-model="optionValues"                     :options="options"                      :clear-on-select="false"                     :preserve-search="true"                      :multiple="false"                     placeholder="Selecciona un habitatge"                      label="name"                      track-by="CAS_id"                     select-label="Seleccionar casa"                     @input="sebreCodiCasa()"                      id="llicases">                 </multiselect>                         </div>             <br>              <table class="table table-striped table-bordered dataTable" cellspacing="0" width="100%" id="reviewTbl" >                 <thead>                     <tr align=center>                         <th>N&uacute;mero de Registre</th>                         <th>Codi Casa</th>                         <th>Nom Casa</th>                         <th>Data</th>                         <th>Comentari</th>                         <th>Actiu</th>                         <th>T&iacute;tul</th>                         <th>N&uacute;mero de Reserva</th>                         <th>Puntuaci&oacute;</th>                         <th>Funcions</th>                     </tr>                 </thead>                 <tbody align=center>                     <tr v-for="review in provaReview" :key="review.REV_id">                         <th>{{review.REV_id}}</th>                         <th>{{review.REV_codiCasa}}</th>                         <th>{{review.CAS_nom}}</th>                         <th>{{review.REV_data}}</th>                         <th>{{review.REV_comentari}}</th>                         <th>{{review.REV_actiu}}</th>                         <th>{{review.REV_title}}</th>                         <th>{{review.RES_id}}</th>                         <th>{{review.REV_rating}}</th>                         <th><button v-on:click="editReview(review)" class="btn btn-primary"><i class="fas fa-edit" title="Editar"></i></button></th>                     </tr>                 </tbody>             </table>         </div> 

El codigo del script es el siguiente:

<script> export default     {        name: 'TaulaReviews',        data()        {             return{              cases: [],              reviews: [],             reviewEdit:[],             loading: false,              selecCasacodi: '',                 //agrupar: [],             nou_registre: '',              provaReview: [],             options: [],             optionValues: [],             afegit: false,             forceRender:false             //canvi: 0,             //componentKey: 0,            };        },         watch: {            sebreForce(){                if (forceRerender){                    this.makeDataTable();                }            }        },        methods:        {            async getCases() // funcio asincrona getCases            {                await Promise.all([                    axios.get("/getLlistaCases"),                    axios.get("/getReviews")                ])                .then(([cases, reviews]) => {                    this.cases = cases.data;                    this.reviews = reviews.data;                    this.reviews.forEach(review =>                     {                        var casareview = this.cases.filter(casa => casa.CAS_id == review.REV_codiCasa);                    })                                        this.cases.forEach(casa => {                        this.options.push(                         {                             CAS_id: casa.CAS_id,                             name: casa.CAS_nom                         });                    });                    console.log(reviews);                })                 .catch(error =>                  {                     console.log(error);                 })            },              makeDataTable() {                 //Destroy data table                 $  ('#reviewTbl').DataTable().destroy();                 // Inicializate data table                 //$  ('#reviewTbl').DataTable().clear();                 var table = $  ('#reviewTbl').DataTable({                     "language": {                         //Posa la datatable en espanyol                         "url": "https://cdn.datatables.net/plug-ins/1.10.16/i18n/Spanish.json"                     },                     "aaSorting": [],                     "columnDefs": [{                         "targets": 'no-sort',                         "orderable": false,                     }],                     "order": [                         [0, "desc"]                     ]                 });             },                   newReview()              {                 if(this.optionValues.CAS_id == undefined)                 {                     alert("S'ha d'escollir una casa abans de clicar afegir review");                     return false;                             }                 this.afegit = true;                 this.$  emit("newReview", this.afegit);             },               editReview(review)             {                 this.editant = true;                 this.$  emit("editReview", this.editant,review);             },            async sebreCodiCasa()             {                 await axios.get('getCasaReview/' + this.optionValues.CAS_id)                 .then((response) => {                     this.provaReview = response.data;                     if(this.provaReview.length == 0)                     {                         toast({type: 'error',title: 'No hi ha registres a mostrar. Seleccioni una altre casa'});                     }                     this.$  nextTick(() => {                             this.makeDataTable();                         });                 })                 this.$  emit("sebreCodiCasa", this.optionValues.CAS_id);             },                  },                 mounted()          {             this.getCases();         },     } </script>

La primera vez que realizo una busqueda sale la información pedida, se cambio de casa, arriba me aparece la casa seleccionada pero no me enseña la información de esta. He revisado el codigo y no consigo ver porque la segunda vez no da la información y la primera si. Y hasta que no realizo un refresco manual no funciona de nuevo. Le he dado vueltas y más vueltas y no consigo ver porque la segunda vez no funciona como toca. Gracias.

¿Como se puede mostrar el porcentaje de carga con dialog y AsyncAsk?

estoy leyendo un json con una funcion asyncAsk, quiero mostrar en un dialog la descarga de los datos, pero el dialog se me cierra enseguida, y cuando no lo pongo a que se oculte no muestra la actualizacion de carga, sino cuando termina se muestra solo el 100%, este es el codigo de la función que estoy usando.

private class Productos2LoadTask extends AsyncTask<Void, Void, JSONArray> { JSONArray resultado=null; @Override protected void onPreExecute() {     super.onPreExecute();     txt_tot_pro.setText("Espere... Conectando");     dialogbtn.setCancelable(false);     dialogbtn.setTitle("Please wait");     dialogbtn.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);     dialogbtn.show(); } @Override protected JSONArray doInBackground(Void... voids) {     try{         mDbHelper.BorrarProductos();         Log.i(TAG, "doInBackground: urlproductos "+url_productos);         JsonArrayRequest jsonArrayReq = new JsonArrayRequest(url_productos,                 new Response.Listener<JSONArray>() {                     @Override                     public void onResponse(JSONArray response) {                         try                         {                             txt_tot_pro.setText("Espere... procesando");                             resultado=response;                             dialogbtn.setIndeterminate(false);                             dialogbtn.setMax(resultado.length());                             Log.i(TAG, "doBackground: resultado " + resultado.toString());                             // hideProgress();                         }catch (Exception e){                             Log.e(TAG, "parseJsonProductos ",e );                         }                     }                 }, new Response.ErrorListener() {              @Override             public void onErrorResponse(VolleyError error) {                 try{                     VolleyLog.d(TAG, "ErrorProductos: " + error.getMessage());                     Log.i(TAG, "onErrorResponseProductos: "+error.getMessage());                     SyncReceive(posSyncRe);                     Log.i("abd", "ErrorProductos: " + error                             + ">>" + error.getCause()                             + ">>" + error.getMessage());                     txt_tot_pro.setText("Ocurrio un error al conectarse al servidor");                 }catch (Exception e){                     Log.e(TAG, "onErrorResponse: ",e );                 }              }          });         jsonArrayReq.setRetryPolicy(new DefaultRetryPolicy(                 //DefaultRetryPolicy.DEFAULT_TIMEOUT_MS,                 15000,                 DefaultRetryPolicy.DEFAULT_MAX_RETRIES,                 DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));         Volley.newRequestQueue(getActivity()).add(jsonArrayReq);     }catch (Exception error){         Log.i(TAG, "parseJsonProductos error: " + error.toString());     }     return resultado; }    @Override protected void onPostExecute(JSONArray cursor) {     super.onPostExecute(cursor);     try{         JSONObject obj=null;         Log.i(TAG, "total Productos: "+resultado.length());          for (int a=0; a<resultado.length();a++) {             // comdetalle cbdet=null;             obj = resultado.getJSONObject(a);             dialogbtn.setProgress(a);             Log.i(TAG, "onResponse: r -- a:"+ a +" - "+obj.getString("IMA_ARTICULO"));             //public rutas(String codigo, String descripcion, String rdcodigo, String cliente, String dia, String orden) {             //showProgress("Producto "+response.length(),a);             txt_tot_pro.setText("Sincronizando ("+String.valueOf(a) +")");             save_producto=new producto(                     obj.getString("IMA_ARTICULO"),                     obj.getString("IMA_DESCRIPCION"),                     obj.getString("IMA_LINEA"),                     obj.getString("IMA_IMPUESTO"),                     obj.getString("IMA_COSTO_PROMEDIO"),                     obj.getString("IMA_PRECIO1"),                     obj.getString("IMA_PRECIO2"),                     obj.getString("IMA_PRECIO3"),                     obj.getString("IMA_PRECIO4"),                     obj.getString("IMA_PRECIO5"),                     obj.getString("IMA_PRECIO6"),                     obj.getString("IMA_PRECIO7"),                     obj.getString("IMA_PRECIO8"),                     obj.getString("IMA_PRECIO9"),                     obj.getString("IMA_PRECIO10"),                     obj.getString("IMA_SUBLINEA"),                     obj.getString("EXISTENCIA"),                     obj.getString("PACK"),"1","cb");             mDbHelper.nuevoProducto(save_producto);         }         txt_tot_pro.setText("Listo,("+resultado.length()+") sincronizacion completa");         SyncReceive(posSyncRe);     }catch (JSONException e){         Log.e(TAG, "onPostExecute: ",e );     }catch (Exception e){         Log.e(TAG, "onPostExecute: ", e);     }     dialogbtn.dismiss(); }} 

Lo que me parece raro es que la funcion ask el doBackground es como se ejecutará luego del onPostExecute, he intentado usando variables generales dentro de la clase pero no logro, también retornando las variables entre las funciones de la clase ask tampoco lo logró.

Espero sus comentarios.

No carga Listbox VBA

Quisiera pedir ayuda con una macro en la que estoy trabajando. Estoy con un combobox en donde estan los clientes. Al seleccionar alguno y presionar buscar, intento traer todoas las coincidencias desde una planilla maestra a un Listbox.

La llamada la hago desde un comboBox para buscar por cliente, pero solo me está trayendo el ultimo dato ingresado. En el ejemplo del Cliente A, al filtrar son 8 registros y solo me muestra la primera fila encontrada. introducir la descripción de la imagen aquí

Este es el código de mi Botón buscar (con el cliente seleccionado en el combo box)

Private Sub google2_Click()     Application.ScreenUpdating = False Dim buscar2 buscar2 = texto2.Value      If buscar2 <> Empty Then     Sheets("Hoja1").Unprotect Password:="cr123"             Hoja1.ListObjects("Tabla1").Range.AutoFilter Field:=36, Criteria1:= _                 buscar2                  UserForm2.lista.List = Range("Tabla1").SpecialCells(xlCellTypeVisible).Value2               Sheets("Hoja1").Protect Password:="cr123"          Else: MsgBox "Debe introducir un valor"     End If     Application.ScreenUpdating = True End Sub 

Les agradezco desde ya