Lors de l'écriture du traitement de scraping avec Selenium of Ruby, il y a une scène où vous voulez vraiment changer la valeur d'attribut. Il n'est pas utilisé lorsque vous souhaitez suivre fidèlement le comportement de l'interface utilisateur, mais il est utile lorsque vous connaissez le comportement de l'interface utilisateur et que vous souhaitez ignorer le traitement gênant et obtenir immédiatement celui souhaité.
L'accès à Attribute dans Ruby ne trouve pas SetAttribute même s'il a GetAttribute. (Cela peut être une question de savoir comment le trouver) Get ne change pas le DOM, mais je suppose qu'il n'est pas préparé car il peut provoquer un comportement inattendu en écriture, donc cette fois j'utiliserai "execute_script" Utiliser.
execute_script.rb
#Initialisation du pilote
client = Selenium::WebDriver::Remote::Http::Default.new
driver = Selenium::WebDriver.for :chrome, http_client: client
#<div id="mw-content-text" lang="ja" dir="ltr" class="mw-content-ltr">
#Je veux changer ja en fr
#Obtenez l'élément cible
target_element = driver.find_element(:class_name, 'mw-content-ltr')
driver.execute_script("arguments[0].setAttribute('lang', 'en');", target_element)
https://www.rubydoc.info/gems/selenium-webdriver/0.0.28/Selenium%2FWebDriver%2FDriver:execute_script
Recommended Posts