質問編集履歴
4
a
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
|
-
|
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
わかりやすくしました。
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
CSSセレクターで
|
1
|
+
CSSセレクターで取得したリストから、一部除外したい要素が存在する場合のやり方。
|
body
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
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
わかりやすくしました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,51 +1,34 @@
|
|
1
1
|
初心者です。ご質問させていただきたいのですがCSSセレクターにて
|
2
|
-
v = dict(first=II, last=I)
|
3
|
-
selector = "#layout-%
|
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
|
-
|
10
|
+
######概要
|
13
|
-
|
11
|
+
selector = "#layout-%s > div > div > a" % II
|
12
|
+
aに当てはまるセレクターを総ざらい
|
13
|
+
クリック処理したあと、閉じる。
|
14
|
-
|
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=
|
17
|
+
II=0
|
26
|
-
miss=1
|
27
18
|
while II < 1000:
|
28
|
-
#ミスが多いばあいはレイアウトを1上げて他のにサーチかける。
|
29
|
-
if miss == 3:
|
30
|
-
|
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
|
-
|
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)) ==
|
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
|
-
|
32
|
+
driver.find_element_by_tag_name('body').send_keys(Keys.END)
|
48
|
-
I=I+1
|
49
|
-
miss=1
|
50
33
|
|
51
34
|
```
|
1
よりわかりやすくしました。
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
|
```
|