DrissionPageのChromiumPageの使い方

DrissionPageはウェブ自動化、スクレイピング、テストのための優れたツールである。この記事ではChromiumPageの機能を簡潔に紹介している。

https://github.com/g1879/DrissionPage

完全なドキュメントは[DrissionPageのドキュメント](https://drissionpage.cn/)で確認できる。


## 目次

1. [インストール](#インストール)
2. [ChromiumPageオブジェクトの作成](#chromiumpageオブジェクトの作成)
3. [基本的な使い方](#基本的な使い方)
4. [高度な使い方](#高度な使い方)
5. [一般的なシナリオの処理](#一般的なシナリオの処理)
6. [ページ情報](#ページ情報)
7. [ファイルアップロード](#ファイルアップロード)
8. [タブ管理](#タブ管理)
9. [iFrame処理](#iframe処理)
10. [イベントリスナー](#イベントリスナー)
11. [ブラウザアクション](#ブラウザアクション)
12. [画面操作](#画面操作)
13. [ブラウザオプション](#ブラウザオプション)


## インストール

ChromiumPageを使用する前に、pipを使用してDrissionPageライブラリをインストールする：

```
pip install drissionpage
```

## ChromiumPageオブジェクトの作成

ChromiumPageオブジェクトを作成することが、その機能を使用するための最初のステップ：

```python
from drission_page import ChromiumPage

# ChromiumPageオブジェクトを作成
page = ChromiumPage()
```

Chromium実行ファイルを指定したり、オプションを追加したりすることも可能：

```python
page = ChromiumPage(executable_path='/path/to/chromium', options=['--headless'])
```

## 基本的な使い方

### ウェブページを開く

```python
page.get('https://www.example.com')
```

### 要素の操作

### 要素の取得

```python
element = page.get_ele('div.content')
```

### 要素情報の取得

```python
text = element.text
attribute = element.attr('class')
```

#### 要素のクリック

```python
element.click()
```

#### 要素へのテキスト入力

```python
element.input('text')
```


## 高度な使い方

### フレームとiFrameの処理

```python
frame = page.switch_to_frame('iframe_name_or_id')
frame.locate('button#inside_frame').click()
page.switch_to_parent_frame()
```

### JavaScriptの実行

```python
result = page.run_js('return document.title')
print(result)
```

### スクリーンショットの撮影

```python
page.screenshot('screenshot.png')
```

### Cookieの管理

```python
cookies = page.get_cookies()
print(cookies)

page.set_cookie({'name': 'test', 'value': '1234'})

page.delete_cookie('test')
```

## 一般的なシナリオの処理

### ポップアップとアラートの処理

```python
page.accept_alert()
page.dismiss_alert()
```

### 要素の待機

#### 要素が表示されるのを待つ

```python
from drission_page import wait_for

wait_for(page.get_ele('div.content').is_visible, timeout=10)
```

#### 要素がクリック可能になるのを待つ

```python
wait_for(page.get_ele('button#submit').is_clickable, timeout=10)
```

### 前後のページに移動

```python
page.back()
page.forward()
```

## ページ情報

### ページの訪問

```python
page.visit('https://www.example.com')
```

### ページ情報の取得

```python
title = page.title
url = page.url
html = page.html
```

### ページ操作

#### ページのリロード

```python
page.reload()
```

#### ページの保存

```python
page.save_screenshot('screenshot.png')
page.save_html('page.html')
```

## ファイルアップロード

### ファイルのアップロード

```python
file_input = page.get_ele('input[type="file"]')
file_input.upload('/path/to/file')
```

## タブ管理

### 新しいタブを開く

```python
page.new_tab('https://www.example.com')
```

### タブ間の切り替え

```python
page.switch_tab(1)  # 最初のタブに切り替え
```

### タブを閉じる

```python
page.close_tab(1)  # 最初のタブを閉じる
```

## iFrame処理

### iFrameへの切り替え

```python
frame = page.switch_to_frame('iframe_id')
frame.locate('button#inside_frame').click()
page.switch_to_parent_frame()
```

### iFrame内の要素を探す

```python
iframe = page.get_ele('iframe#iframe_id')
frame_page = page.switch_to_frame(iframe)
frame_element = frame_page.get_ele('div.content')
```

## イベントリスナー

### イベントリスナーの追加

```python
page.add_listener('click', 'button#submit', callback_function)

def callback_function(event):
    print(f'ボタンがクリックされました: {event}')
```

### イベントリスナーの削除

```python
page.remove_listener('click', 'button#submit')
```

## ブラウザアクション

### マウスアクション

```python
element = page.get_ele('button#submit')
page.mouse.move_to(element)
page.mouse.click(element)
```

### キーボードアクション

```python
page.keyboard.type('Hello, World!')
page.keyboard.press('Enter')
```

## 画面操作

### フルスクリーンモード

```python
page.full_screen()
```

### フルスクリーンモードの終了

```python
page.exit_full_screen()
```

## ブラウザオプション

### ブラウザオプションの設定

```python
options = {
    'headless': True,
    'disable_gpu': True,
    'no_sandbox': True
}
page = ChromiumPage(options=options)
```

### ブラウザ設定の変更

```python
page.set_window_size(1920, 1080)
page.set_user_agent('MyCustomUserAgent/1.0')
```