2017-09-24 3 views
1

Je cours Selenium avec Firefox en Python, et j'essaie de faire correspondre les éléments sur une page à partir de mots-clés dans une liste.Python Selenium: Supprimer certains caractères du corps de la page Web

Pour que la recherche d'élément réussisse, je dois me débarrasser de caractères spéciaux tels que ® et ™ sur la page Web. Je ne suis malheureusement pas en mesure de prédire quand ces caractères sont employés, et je ne peux donc pas les ajouter sur la "fin mot-clé" du problème. Je ne pense pas que Selenium ou Firefox lui-même peut supprimer les caractères indésirables d'une page Web, mais je pensais que Selenium exécuterait un JavaScript sur la page et supprimerait ces caractères. Est-ce possible?

Quelque chose comme ça sans doute non-travail, pseudo-code:

driver.execute_script("document.body.innerHTML.replace(/®/g, '');") 

Le remplacement devrait se produire avant que le conducteur essaie de "lire" la page et find_element. Les caractères dont je veux me débarrasser sont les <a>text() nœuds des cellules <td> dans le corps du document.

Répondre

1

ASCII est à portée de 0 à 127, de sorte que vous pouvez le faire de cette façon:

document.body.innerHTML.replace(/[^\x00-\x7F]/g, ''); 

Si vous voulez supprimer uniquement ®, vous pouvez le faire de cette façon:

document.body.innerHTML.replace(/(®)/, ''); 
+0

Cela a fonctionné pour moi: 'driver.execute_script (" var remplacé = $ ('body'). html(). replace (/ (®)/g, ''); $ ('body'). html (remplacé); ") ', à partir de ce [fil] (https://stackoverflow.com/a/10550100/4909923) avec votre aide. – Winterflags

+0

Je pense que c'est beaucoup plus court et plus facile à lire: 'driver.execute_script (" document.body.innerHTML.replace (/ (®) /, ''); ")' – mostaszewski

+0

Je suis d'accord avec vous là-bas. Mais lors de l'exécution de cette commande dans la console Javascript de Chrome, la page n'a pas été rendue de nouveau (bien que je puisse voir la sortie HTML dans la console de réponse). Peut-être qu'il me manque quelque chose? – Winterflags