첫 번째 링크를 클릭하기 위해 자동화 된 Google 검색을 얻으려고합니다. 지금까지 나는 성공하지 못했고 누군가 나를 도와 줄 수 있는지 궁금했다. 첫 번째 링크를 클릭하는 작업이 매번 실패하더라도 검색 결과가 채워집니다.
require "selenium-webdriver"
driver = Selenium::WebDriver.for :firefox
driver.navigate.to "http://google.com"
element = driver.find_element(:name, 'q')
element.send_keys "translate"
element.submit
resultlink = driver.find_Element(:link, "Google Translate")
resultlink.click
첫째, Selenium을 배우는 경우 Google 페이지를 사용하여 시작하지 마십시오. 단순 해 보이지만 후드 아래에서 매우 까다 롭고 복잡합니다. 자동화 할 다른 웹 사이트를 찾아주세요. 어쨌든 Google의 사용자 계약에 위배됩니다.
그런 다음 작업 코드를 제공 할 수 있습니다. 참고 Google 검색 결과는 다른 브라우저에서 다르게 렌더링 될 수 있으며 WebDriverWait 를 사용 하여 대기 해야합니다 .
require 'selenium-webdriver'
driver = Selenium::WebDriver.for :firefox
driver.navigate.to "http://google.com"
element = driver.find_element(:name, 'q')
element.send_keys "translate"
element.submit
wait = Selenium::WebDriver::Wait.new(:timeout => 10)
wait.until {
driver.find_element(:css , 'h3 > a')
}
# click first result
# driver.find_element(:xpath , '(.//h3/a)[1]').click
results = driver.find_elements(:css , 'h3 > a')
results.each { |result|
if result.attribute('textContent') == 'Google Translate'
result.click
break
end
}
(.//h3/a)[1]
첫 번째 결과를 의미합니다. Firefox에서 결과는 data-href
식별을위한 고유하지 않으므로 색인을 사용해야합니다.
그렇지 않으면 속성 textContent
이 같은 링크에 대한 모든 결과 링크를 반복 할 수 있습니다 Google Translate
. 링크 텍스트는 실제로 Google <em>Translate</em>
이므로 text()
XPath에서 사용하면 작동하지 않을 수 있습니다.
위의 해결책이 너무 많아서 Google 페이지를 사용하여 Selenium 학습을 시작해서는 안된다는 것을 증명합니다. ;)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다