アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。

有料会員サイトのCSVデータを毎日取得しているのですが、
自動で処理できないかと四苦八苦しております。

Jupyter Lab3.014でPythonで試してるのですが、
ログインボタンを押せずに困ってます。

対象サイト
https://www.formzu.com/user/login/
対象ログインボタン
<button class="btn btn-danger">ログイン</button>

python seleniumの構造
browser_form = browser.find_element_by_name(btn btn-danger)
time.sleep(3)
browser_from.click()

ID、Nameがないので上記ではだめだとは思っておりますが、
browser_form = find_element_by_xpath("//*[@id="room"]/div/div/form/div/div/div[3]/div/button")では、invalid character in identifierで全くだめでした。

ご指導宜しくお願い致します。

以下エラー文

<ipython-input-88-d32f36fe8bfd>:1: DeprecationWarning: find_element_by_* commands are deprecated. Please use find_element() instead
browser_form = browser.find_element_by_name('btn btn-danger')
---------------------------------------------------------------------------
NoSuchElementException Traceback (most recent call last)
<ipython-input-88-d32f36fe8bfd> in <module>
----> 1 browser_form = browser.find_element_by_name('btn btn-danger')
2 time.sleep(3)
3 browser_from.click()

~\anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py in find_element_by_name(self, name)
656 stacklevel=2,
657 )
--> 658 return self.find_element(by=By.NAME, value=name)
659
660 def find_elements_by_name(self, name) -> WebElement:

~\anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py in find_element(self, by, value)
1236 value = '[name="%s"]' % value
1237
-> 1238 return self.execute(Command.FIND_ELEMENT, {
1239 'using': by,
1240 'value': value})['value']

~\anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py in execute(self, driver_command, params)
416 response = self.command_executor.execute(driver_command, params)
417 if response:
--> 418 self.error_handler.check_response(response)
419 response['value'] = self._unwrap_value(
420 response.get('value', None))

~\anaconda3\lib\site-packages\selenium\webdriver\remote\errorhandler.py in check_response(self, response)
241 alert_text = value['alert'].get('text')
242 raise exception_class(message, screen, stacktrace, alert_text) # type: ignore[call-arg] # mypy is not smart enough here
--> 243 raise exception_class(message, screen, stacktrace)
244
245 def _value_or_default(self, obj: Mapping[_KT, _VT], key: _KT, default: _VT) -> _VT:

NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[name="btn btn-danger"]"}
(Session info: chrome=108.0.5359.125)
Stacktrace:
Backtrace:
(No symbol) [0x00F3F243]
(No symbol) [0x00EC7FD1]
(No symbol) [0x00DBD04D]
(No symbol) [0x00DEC0B0]
(No symbol) [0x00DEC22B]
(No symbol) [0x00E1E612]
(No symbol) [0x00E085D4]
(No symbol) [0x00E1C9EB]
(No symbol) [0x00E08386]
(No symbol) [0x00DE163C]
(No symbol) [0x00DE269D]
GetHandleVerifier [0x011D9A22+2655074]
GetHandleVerifier [0x011CCA24+2601828]
GetHandleVerifier [0x00FE8C0A+619850]
GetHandleVerifier [0x00FE7830+614768]
(No symbol) [0x00ED05FC]
(No symbol) [0x00ED5968]
(No symbol) [0x00ED5A55]
(No symbol) [0x00EE051B]
BaseThreadInitThunk [0x76C3FEF9+25]
RtlGetAppContainerNamedObjectPath [0x77557BBE+286]
RtlGetAppContainerNamedObjectPath [0x77557B8E+238]

A 回答 (1件)

> find_element_by_* commands are deprecated.


非推奨なので find_element に変えましょう。

> NoSuchElementException
name属性が無い要素を名前(By.NAME)で探せないので、
クラス(By.CLASS_NAME)が "btn-danger" または
セレクタ(By.CSS_SELECTOR)が "form button.btn-danger"
で探しましょう。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!

以下のように書いたのですが、
エラーも何も起こらず、どうしてよいか皆目見当が
つかなくなっております。

ID、PASSまでは自動でできておりますので、
Jupyter Lab3.014が古いなどがあるのでしょうか?
今一度のご指導宜しくお願い致します。

browser_form = browser.find_element(By.CSS_SELECTOR,"from button.btn-danger")
time.sleep(3)
browser_from.click()

お礼日時:2022/12/20 20:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!