selenium_with_python_複数のclass属性の値がセットされている場合02_By.CSS_SELECTORの使い方


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")`

   

   


適切な記述を使用することで、狙った要素を取得できます!


コメント