質問するログイン新規登録

回答編集履歴

2

誤字修正

2020/01/04 10:31

投稿

Reach
Reach

スコア735

answer CHANGED
@@ -1,5 +1,5 @@
1
1
  配列に テキストではなく hrefを取得して
2
- navigateするは 如何でしょうか?
2
+ navigateするは 如何でしょうか?
3
3
 
4
4
  ```Ruby
5
5
  def main()

1

コード追加

2020/01/04 10:31

投稿

Reach
Reach

スコア735

answer CHANGED
@@ -1,2 +1,58 @@
1
1
  配列に テキストではなく hrefを取得して
2
- navigateするには 如何でしょうか?
2
+ navigateするには 如何でしょうか?
3
+
4
+ ```Ruby
5
+ def main()
6
+ headers = ['sent_on','title','sent','opened','click','error','unsubscribe']
7
+ @title = 'benchmark'
8
+ @time = Time.new.strftime("%Y_%m_%d")
9
+ @filename = "#{@title}_new_#{@time}.csv"
10
+ CSV.open("#{@filename}", "w", write_headers: true) {|csv| csv << headers }
11
+ @stdout.info("#{@filename} is created")
12
+
13
+ options = Selenium::WebDriver::Chrome::Options.new
14
+ # options.add_argument('--headless')
15
+ options.add_argument('--no-sandbox')
16
+ options.add_argument('--disable-gpu')
17
+ options.add_argument('--window-size=1280,1024')
18
+
19
+ wait = Selenium::WebDriver::Wait.new(timeout: 10)
20
+ driver = Selenium::WebDriver.for :chrome, options: options
21
+ driver.navigate.to "https://ui.benchmarkemail.com/jp/login"
22
+ # ログイン情報入力後、ログインボタン押下
23
+ driver.find_element(:id, 'login').send_keys('manabu.goto.1@helte-corp.com');sleep 1
24
+ driver.find_element(:id, 'password').send_keys('Helte0322');sleep 1
25
+ driver.find_element(:xpath, '//*[@id="login-page"]/div/div[2]/div/div[4]/fieldset[3]/div[1]/a').click;sleep 2
26
+
27
+ # レポートページに遷移
28
+ driver.find_element(:xpath, '//*[@id="sideMenu"]/div[2]/ul/li[4]/span').click;sleep 1
29
+ driver.find_element(:xpath, '//*[@id="linkEmailReports_desktop"]/a').click;sleep 1
30
+ # 各メールレポートの詳細
31
+ links = driver.find_elements(:class, 'title')
32
+ mail_links = links.each_slice(2).map(&:first)
33
+
34
+ hrefs = []
35
+ mail_links.each do |link|
36
+ hrefs.push(link.find_element(:tag_name, 'a').attribute('href'))
37
+ end
38
+
39
+
40
+ hrefs.each do |link|
41
+ begin
42
+
43
+ driver.navigate.to link
44
+
45
+ params = get_params(driver,wait)
46
+
47
+ if params.nil?
48
+ @stdout.fatal("params is nil")
49
+ next
50
+ end
51
+ rescue => e
52
+ @stdout.fatal(e)
53
+ driver.close
54
+ next
55
+ end
56
+ end
57
+ end
58
+ ```