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

質問編集履歴

4

a

2020/07/30 10:22

投稿

Yudohu
Yudohu

スコア25

title CHANGED
File without changes
body CHANGED
@@ -2,33 +2,18 @@
2
2
  selector = "#layout-%s > div > div > a" % II
3
3
  といった条件で指定しているのですが
4
4
 
5
- ・そのセレクターはあるがその子構文が
6
- <div class="css-5etuyd-GridImageBannerItem">XXXX</div> CSSセレクターでいうと#layout-XXX > div > div > a:nth-child(a) > divにあたるところです。
7
- であったらそセレクターを飛ば
5
+ った条件で指定している
8
- といった処理たいのですが、どのよな構文が良かご教授いだければ思います。
6
+ Aの中に特例のHREFを指定しているAがあれば飛ばすという作業やりたいのですが、ういは可能でしょうか?
7
+ 例えば
8
+ 、A HREF = "XXXXXX"
9
+ A href = "tokutei"←こちら
10
+ a href = "YYYYYY"
9
11
 
10
- 調べた感じと。notを使えばい思いますが、当てはめ方がいまいちわかっておりません
12
+ hereけ飛した場合です。href指定先のtokuteiは常に一定のものます。
11
- ```html
12
- あるセレクタを含まない要素を指定
13
- CSSセレクタ
14
- selector1:not(selector2)
15
- 使用例1
16
- ul > li:not(.blue)
17
- ------------
18
- <ul>
19
- <li>1つ目のliタグ</li> # Here!
20
- <li class="red">2つ目のliタグ</li> # Here!
21
- <li class="green">3つ目のliタグ</li> # Here!
22
- <li class="blue">4つ目のliタグ</li>
23
- </ul>
24
- ```
25
13
 
26
- ######概要
27
- selector = "#layout-%s > div > div > a" % II
28
- aに当てはまるセレクターを総ざらい
29
- クリック処理したあと、閉じる。
30
- 当layoutのaがなくなればII = II + 1にてlayoutの番号を変えてサーチといった流れです。
31
14
 
15
+ 以下にソースコード貼ります。
16
+ 可能であればご教授お願いします。
32
17
  ```html
33
18
  II=0
34
19
  while II < 1000:
@@ -46,5 +31,4 @@
46
31
  element = driver.find_element_by_css_selector(selector)
47
32
  element.click()
48
33
  driver.find_element_by_tag_name('body').send_keys(Keys.END)
49
-
50
34
  ```

3

わかりやすくしました。

2020/07/30 10:22

投稿

Yudohu
Yudohu

スコア25

title CHANGED
@@ -1,1 +1,1 @@
1
- CSSセレクターで否定も混ぜる場合
1
+ CSSセレクターで取得したリストから、一部除外したい要素が存在する場合のやり方。
body CHANGED
@@ -1,4 +1,4 @@
1
- 初心者です。ご質問させていただきたいのですがCSSセレクターにて
1
+ ご質問させていただきたいのですがCSSセレクターにて
2
2
  selector = "#layout-%s > div > div > a" % II
3
3
  といった条件で指定しているのですが
4
4
 
@@ -7,6 +7,22 @@
7
7
  であったらそのセレクターを飛ばす
8
8
  といった処理をしたいのですが、どのような構文が良いかご教授いただければと思います。
9
9
 
10
+ 調べた感じだと。notを使えばいいのかと思いますが、当てはめ方がいまいちわかっておりません。
11
+ ```html
12
+ あるセレクタを含まない要素を指定
13
+ CSSセレクタ
14
+ selector1:not(selector2)
15
+ 使用例1
16
+ ul > li:not(.blue)
17
+ ------------
18
+ <ul>
19
+ <li>1つ目のliタグ</li> # Here!
20
+ <li class="red">2つ目のliタグ</li> # Here!
21
+ <li class="green">3つ目のliタグ</li> # Here!
22
+ <li class="blue">4つ目のliタグ</li>
23
+ </ul>
24
+ ```
25
+
10
26
  ######概要
11
27
  selector = "#layout-%s > div > div > a" % II
12
28
  aに当てはまるセレクターを総ざらい

2

わかりやすくしました。

2020/07/25 05:18

投稿

Yudohu
Yudohu

スコア25

title CHANGED
File without changes
body CHANGED
@@ -1,51 +1,34 @@
1
1
  初心者です。ご質問させていただきたいのですがCSSセレクターにて
2
- v = dict(first=II, last=I)
3
- selector = "#layout-%(first)s > div > div > a:nth-child(%(last)s)" % v
2
+ selector = "#layout-%s > div > div > a" % II
4
3
  といった条件で指定しているのですが
5
4
 
5
+ ・そのセレクターはあるがその子構文が
6
+ <div class="css-5etuyd-GridImageBannerItem">XXXX</div> CSSセレクターでいうと#layout-XXX > div > div > a:nth-child(a) > divにあたるところです。
6
- その
7
+ であったらそのセレクターを飛ばす
8
+ といった処理をしたいのですが、どのような構文が良いかご教授いただければと思います。
7
9
 
8
- ・そのセレクターが存在しなかったら、下へスクロールする
9
- ・そのセレクターはあるがその下?が<div class="css-5etuyd-GridImageBannerItem">XXXX</div>であったらそのセレクターを飛ばす
10
- といった処理をしたいのですが、構文がうまく行ってないと思われます。
11
- ご教授お願い致したします。
12
- ```html
10
+ ######概要
13
- if len(driver.find_elements_by_css_selector(selector)) == 0:
11
+ selector = "#layout-%s > div > div > a" % II
12
+ aに当てはまるセレクターを総ざらい
13
+ クリック処理したあと、閉じる。
14
- driver.find_element_by_tag_name('body').send_keys(Keys.END)
14
+ 当layoutのaがなくなればII = II + 1にてlayoutの番号を変えてサーチといった流れです。
15
- miss=miss+1
16
- elif len(driver.find_elements_by_css_selector(selector:not(.css-5etuyd-GridImageBannerItem))) == 0:
17
- I=I+1
18
- else:
19
- ~~~~
20
15
 
21
- ```
22
-
23
16
  ```html
24
- I=1
25
- II=1
17
+ II=0
26
- miss=1
27
18
  while II < 1000:
28
- #ミスが多いばあいはレイアウトを1上げて他のにサーチかける。
29
- if miss == 3:
30
- II=II+1
19
+ II = II + 1
31
- #a:nth-childが10を超えたらレイアウトを1上げて他のレイアウトにサーチかける。
32
- if I == 11:
33
- II=II+1
34
- I=1
35
- else:
36
- v = dict(first=II, last=I)
37
- selector = "#layout-%(first)s > div > div > a:nth-child(%(last)s)" % v
20
+ selector = "#layout-%s > div > div > a" % II
21
+ elements = driver.find_elements_by_css_selector(selector)
22
+ print(selector)
23
+ for _index, element in zip(range(50), elements):
38
24
  print(selector)
25
+ element.click()
26
+ time.sleep(1)
27
+ #クローズの処理
28
+ selector = "#dialog-root > div:nth-child(9) > div > div.css-9241wp-BasePersonalView > div > div.css-12g7msy-BasePersonalView > button:nth-child(1)"
39
- if len(driver.find_elements_by_css_selector(selector)) == 0:
29
+ if len(driver.find_elements_by_css_selector(selector)) == 1:
40
- driver.find_element_by_tag_name('body').send_keys(Keys.END)
41
- miss=miss+1
42
- elif len(driver.find_elements_by_css_selector(selector:not(.css-5etuyd-GridImageBannerItem))) == 0:
43
- I=I+1
44
- else:
45
30
  element = driver.find_element_by_css_selector(selector)
46
31
  element.click()
47
- time.sleep(1)
32
+ driver.find_element_by_tag_name('body').send_keys(Keys.END)
48
- I=I+1
49
- miss=1
50
33
 
51
34
  ```

1

よりわかりやすくしました。

2020/07/25 05:07

投稿

Yudohu
Yudohu

スコア25

title CHANGED
File without changes
body CHANGED
@@ -21,9 +21,14 @@
21
21
  ```
22
22
 
23
23
  ```html
24
+ I=1
25
+ II=1
26
+ miss=1
24
27
  while II < 1000:
28
+ #ミスが多いばあいはレイアウトを1上げて他のにサーチかける。
25
29
  if miss == 3:
26
30
  II=II+1
31
+ #a:nth-childが10を超えたらレイアウトを1上げて他のレイアウトにサーチかける。
27
32
  if I == 11:
28
33
  II=II+1
29
34
  I=1
@@ -40,17 +45,7 @@
40
45
  element = driver.find_element_by_css_selector(selector)
41
46
  element.click()
42
47
  time.sleep(1)
43
- #ピックアップが出てきたときの処理
44
- selector = '#root > div.css-1xv97fy-Page > main > div > header > div.css-bifdz8-Header'
45
- if len(driver.find_elements_by_css_selector(selector)) == 1:
46
- element = driver.find_element_by_css_selector(selector)
47
- element.click()
48
- #クローズの処理
49
- selector = "#dialog-root > div:nth-child(9) > div > div.css-9241wp-BasePersonalView > div > div.css-12g7msy-BasePersonalView > button:nth-child(1)"
50
- if len(driver.find_elements_by_css_selector(selector)) == 1:
51
- element = driver.find_element_by_css_selector(selector)
52
- element.click()
53
- print(str(I))
54
48
  I=I+1
55
49
  miss=1
50
+
56
51
  ```