質問編集履歴
4
a
test
CHANGED
File without changes
|
test
CHANGED
@@ -6,59 +6,29 @@
|
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
-
|
9
|
+
いった条件で指定しているのですが
|
10
10
|
|
11
|
-
|
11
|
+
Aの中に特例のHREFを指定しているAがあれば飛ばすという作業をやりたいのですが、そういったことは可能でしょうか?
|
12
12
|
|
13
|
-
|
13
|
+
例えば
|
14
14
|
|
15
|
+
、A HREF = "XXXXXX"
|
16
|
+
|
15
|
-
|
17
|
+
A href = "tokutei"←こちら
|
18
|
+
|
19
|
+
a href = "YYYYYY"
|
16
20
|
|
17
21
|
|
18
22
|
|
19
|
-
|
23
|
+
hereだけ飛ばしたい場合です。hrefの指定先のtokuteiは常に一定のものとします。
|
20
|
-
|
21
|
-
```html
|
22
|
-
|
23
|
-
あるセレクタを含まない要素を指定
|
24
|
-
|
25
|
-
CSSセレクタ
|
26
|
-
|
27
|
-
selector1:not(selector2)
|
28
|
-
|
29
|
-
使用例1
|
30
|
-
|
31
|
-
ul > li:not(.blue)
|
32
|
-
|
33
|
-
------------
|
34
|
-
|
35
|
-
<ul>
|
36
|
-
|
37
|
-
<li>1つ目のliタグ</li> # Here!
|
38
|
-
|
39
|
-
<li class="red">2つ目のliタグ</li> # Here!
|
40
|
-
|
41
|
-
<li class="green">3つ目のliタグ</li> # Here!
|
42
|
-
|
43
|
-
<li class="blue">4つ目のliタグ</li>
|
44
|
-
|
45
|
-
</ul>
|
46
|
-
|
47
|
-
```
|
48
24
|
|
49
25
|
|
50
26
|
|
51
|
-
######概要
|
52
|
-
|
53
|
-
selector = "#layout-%s > div > div > a" % II
|
54
|
-
|
55
|
-
aに当てはまるセレクターを総ざらい
|
56
|
-
|
57
|
-
クリック処理したあと、閉じる。
|
58
|
-
|
59
|
-
当layoutのaがなくなればII = II + 1にてlayoutの番号を変えてサーチといった流れです。
|
60
27
|
|
61
28
|
|
29
|
+
以下にソースコード貼ります。
|
30
|
+
|
31
|
+
可能であればご教授お願いします。
|
62
32
|
|
63
33
|
```html
|
64
34
|
|
@@ -94,6 +64,4 @@
|
|
94
64
|
|
95
65
|
driver.find_element_by_tag_name('body').send_keys(Keys.END)
|
96
66
|
|
97
|
-
|
98
|
-
|
99
67
|
```
|
3
わかりやすくしました。
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
CSSセレクターで
|
1
|
+
CSSセレクターで取得したリストから、一部除外したい要素が存在する場合のやり方。
|
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
ご質問させていただきたいのですがCSSセレクターにて
|
2
2
|
|
3
3
|
selector = "#layout-%s > div > div > a" % II
|
4
4
|
|
@@ -13,6 +13,38 @@
|
|
13
13
|
であったらそのセレクターを飛ばす
|
14
14
|
|
15
15
|
といった処理をしたいのですが、どのような構文が良いかご教授いただければと思います。
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
調べた感じだと。notを使えばいいのかと思いますが、当てはめ方がいまいちわかっておりません。
|
20
|
+
|
21
|
+
```html
|
22
|
+
|
23
|
+
あるセレクタを含まない要素を指定
|
24
|
+
|
25
|
+
CSSセレクタ
|
26
|
+
|
27
|
+
selector1:not(selector2)
|
28
|
+
|
29
|
+
使用例1
|
30
|
+
|
31
|
+
ul > li:not(.blue)
|
32
|
+
|
33
|
+
------------
|
34
|
+
|
35
|
+
<ul>
|
36
|
+
|
37
|
+
<li>1つ目のliタグ</li> # Here!
|
38
|
+
|
39
|
+
<li class="red">2つ目のliタグ</li> # Here!
|
40
|
+
|
41
|
+
<li class="green">3つ目のliタグ</li> # Here!
|
42
|
+
|
43
|
+
<li class="blue">4つ目のliタグ</li>
|
44
|
+
|
45
|
+
</ul>
|
46
|
+
|
47
|
+
```
|
16
48
|
|
17
49
|
|
18
50
|
|
2
わかりやすくしました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,100 +1,66 @@
|
|
1
1
|
初心者です。ご質問させていただきたいのですがCSSセレクターにて
|
2
2
|
|
3
|
-
v = dict(first=II, last=I)
|
4
|
-
|
5
|
-
selector = "#layout-%
|
3
|
+
selector = "#layout-%s > div > div > a" % II
|
6
4
|
|
7
5
|
といった条件で指定しているのですが
|
8
6
|
|
9
7
|
|
10
8
|
|
9
|
+
・そのセレクターはあるがその子構文が
|
10
|
+
|
11
|
+
<div class="css-5etuyd-GridImageBannerItem">XXXX</div> CSSセレクターでいうと#layout-XXX > div > div > a:nth-child(a) > divにあたるところです。
|
12
|
+
|
11
|
-
その
|
13
|
+
であったらそのセレクターを飛ばす
|
14
|
+
|
15
|
+
といった処理をしたいのですが、どのような構文が良いかご教授いただければと思います。
|
12
16
|
|
13
17
|
|
14
18
|
|
15
|
-
|
19
|
+
######概要
|
16
20
|
|
17
|
-
|
21
|
+
selector = "#layout-%s > div > div > a" % II
|
18
22
|
|
19
|
-
|
23
|
+
aに当てはまるセレクターを総ざらい
|
20
24
|
|
21
|
-
|
25
|
+
クリック処理したあと、閉じる。
|
22
26
|
|
23
|
-
```html
|
24
|
-
|
25
|
-
|
27
|
+
当layoutのaがなくなればII = II + 1にてlayoutの番号を変えてサーチといった流れです。
|
26
|
-
|
27
|
-
driver.find_element_by_tag_name('body').send_keys(Keys.END)
|
28
|
-
|
29
|
-
miss=miss+1
|
30
|
-
|
31
|
-
elif len(driver.find_elements_by_css_selector(selector:not(.css-5etuyd-GridImageBannerItem))) == 0:
|
32
|
-
|
33
|
-
I=I+1
|
34
|
-
|
35
|
-
else:
|
36
|
-
|
37
|
-
~~~~
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
```
|
42
28
|
|
43
29
|
|
44
30
|
|
45
31
|
```html
|
46
32
|
|
47
|
-
I=1
|
48
|
-
|
49
|
-
II=
|
33
|
+
II=0
|
50
|
-
|
51
|
-
miss=1
|
52
34
|
|
53
35
|
while II < 1000:
|
54
36
|
|
55
|
-
|
37
|
+
II = II + 1
|
56
38
|
|
57
|
-
i
|
39
|
+
selector = "#layout-%s > div > div > a" % II
|
58
40
|
|
59
|
-
|
41
|
+
elements = driver.find_elements_by_css_selector(selector)
|
60
42
|
|
61
|
-
|
43
|
+
print(selector)
|
62
44
|
|
63
|
-
if I == 11:
|
64
|
-
|
65
|
-
II=II+1
|
66
|
-
|
67
|
-
I=1
|
68
|
-
|
69
|
-
else:
|
70
|
-
|
71
|
-
|
45
|
+
for _index, element in zip(range(50), elements):
|
72
|
-
|
73
|
-
selector = "#layout-%(first)s > div > div > a:nth-child(%(last)s)" % v
|
74
46
|
|
75
47
|
print(selector)
|
76
48
|
|
77
|
-
|
49
|
+
element.click()
|
78
50
|
|
79
|
-
|
51
|
+
time.sleep(1)
|
80
52
|
|
81
|
-
|
53
|
+
#クローズの処理
|
82
54
|
|
83
|
-
eli
|
55
|
+
selector = "#dialog-root > div:nth-child(9) > div > div.css-9241wp-BasePersonalView > div > div.css-12g7msy-BasePersonalView > button:nth-child(1)"
|
84
56
|
|
85
|
-
I=I+1
|
86
|
-
|
87
|
-
else:
|
57
|
+
if len(driver.find_elements_by_css_selector(selector)) == 1:
|
88
58
|
|
89
59
|
element = driver.find_element_by_css_selector(selector)
|
90
60
|
|
91
61
|
element.click()
|
92
62
|
|
93
|
-
|
63
|
+
driver.find_element_by_tag_name('body').send_keys(Keys.END)
|
94
|
-
|
95
|
-
I=I+1
|
96
|
-
|
97
|
-
miss=1
|
98
64
|
|
99
65
|
|
100
66
|
|
1
よりわかりやすくしました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -44,11 +44,21 @@
|
|
44
44
|
|
45
45
|
```html
|
46
46
|
|
47
|
+
I=1
|
48
|
+
|
49
|
+
II=1
|
50
|
+
|
51
|
+
miss=1
|
52
|
+
|
47
53
|
while II < 1000:
|
54
|
+
|
55
|
+
#ミスが多いばあいはレイアウトを1上げて他のにサーチかける。
|
48
56
|
|
49
57
|
if miss == 3:
|
50
58
|
|
51
59
|
II=II+1
|
60
|
+
|
61
|
+
#a:nth-childが10を超えたらレイアウトを1上げて他のレイアウトにサーチかける。
|
52
62
|
|
53
63
|
if I == 11:
|
54
64
|
|
@@ -82,30 +92,10 @@
|
|
82
92
|
|
83
93
|
time.sleep(1)
|
84
94
|
|
85
|
-
#ピックアップが出てきたときの処理
|
86
|
-
|
87
|
-
selector = '#root > div.css-1xv97fy-Page > main > div > header > div.css-bifdz8-Header'
|
88
|
-
|
89
|
-
if len(driver.find_elements_by_css_selector(selector)) == 1:
|
90
|
-
|
91
|
-
element = driver.find_element_by_css_selector(selector)
|
92
|
-
|
93
|
-
element.click()
|
94
|
-
|
95
|
-
#クローズの処理
|
96
|
-
|
97
|
-
selector = "#dialog-root > div:nth-child(9) > div > div.css-9241wp-BasePersonalView > div > div.css-12g7msy-BasePersonalView > button:nth-child(1)"
|
98
|
-
|
99
|
-
if len(driver.find_elements_by_css_selector(selector)) == 1:
|
100
|
-
|
101
|
-
element = driver.find_element_by_css_selector(selector)
|
102
|
-
|
103
|
-
element.click()
|
104
|
-
|
105
|
-
print(str(I))
|
106
|
-
|
107
95
|
I=I+1
|
108
96
|
|
109
97
|
miss=1
|
110
98
|
|
99
|
+
|
100
|
+
|
111
101
|
```
|