selenium with pythonについて、
ある要素を driver.find_element(BY.CLASS_NAME, "classの指定")
で取得したいとき、その取得したい側の要素に複数のclassの値がセットされている場合、
# class1とclass2を両方持つ要素
element
= driver.find_element(By.CSS_SELECTOR, ".class1.class2")
というように通常は、
By.CSS_SELECTORを使うそうですが、
第二引数の文字列の各クラスは連結するのでしょうか?
あいだにスペースを挟むのでしょうか?
↓
`By.CSS_SELECTOR` を使う場合、
**複数のクラスを持つ要素**を指定するためには、
クラス名を連結し、**間にスペースを挟まずに記述**します。
たとえば、`class1` と `class2` の両方を持つ要素を指定する場合は、
次のように記述します。
```python
element
= driver.find_element(By.CSS_SELECTOR, ".class1.class2")
```
この指定は、
「`class1` というクラスと `class2` というクラスを両方持つ要素」を
正しく取得します。
---
### クラスの指定にスペースを挟む場合
もし間にスペースを挟むと、CSS セレクターとしての意味が変わります。
```python
element
= driver.find_element(By.CSS_SELECTOR, ".class1 .class2")
```
この場合、`.class1` を持つ要素の**子孫要素**で
`.class2` を持つ要素を取得することになります。
---
### まとめ
1. **両方のクラスを持つ要素を指定**:
- **間にスペースなし**: `.class1.class2`
- 例: `driver.find_element(By.CSS_SELECTOR, ".class1.class2")`
2. **子孫要素のクラスを指定**:
- **間にスペースあり**: `.class1 .class2`
- 例: `driver.find_element(By.CSS_SELECTOR, ".class1 .class2")`
適切な記述を使用することで、狙った要素を取得できます!
コメント
コメントを投稿