簡體   English   中英

find_element_by_class_name 不適用於 Python

[英]find_element_by_class_name does not work with Python

我正在嘗試使用 Selenium 和 Python 填寫表格。

我在以下代碼片段中使用find_element_by_class_namefind_element_by_css_selector ,但它不起作用。 我不知道為什么和 Java 一樣有效。

代碼:

url = 'https://service.mail.com/registration.html'
driver = webdriver.Chrome('/Users/xxxxx/code/chromedriver')
driver.get(url)
driver.find_element_by_css_selector('.Required.userdata-firstname').send_keys("james")

結果:

Traceback (most recent call last):
  File "captcha_createMailBoxes.py", line 51, in <module>
    driver.find_element_by_css_selector('.Required.userdata-firstname').send_keys("james")
  File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webelement.py", line 479, in send_keys
    'value': keys_to_typing(value)})
  File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webelement.py", line 628, in _execute
    return self._parent.execute(command, params)
  File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 312, in execute
    self.error_handler.check_response(response)
  File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotInteractableException: Message: Element <li class="Required userdata-firstname"> is not reachable by keyboard

代碼:

url = 'https://service.mail.com/registration.html'
driver = webdriver.Chrome('/Users/xxxxx/code/chromedriver')
driver.get(url)
driver.find_element_by_class_name("userdata-firstname").send_keys("james")

結果:

Traceback (most recent call last):
  File "captcha_createMailBoxes.py", line 54, in <module>
    driver.find_element_by_class_name("userdata-firstname").send_keys("james")
  File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webelement.py", line 479, in send_keys
    'value': keys_to_typing(value)})
  File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webelement.py", line 628, in _execute
    return self._parent.execute(command, params)
  File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 312, in execute
    self.error_handler.check_response(response)
  File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotInteractableException: Message: Element <li class="Required userdata-firstname"> is not reachable by keyboard

任何人都可以提供幫助嗎? 我真的不想在這方面使用 Java.....

find_element_by_class_name接收一個類作為參數。 "Required userdata-firstname"是兩個類。 要么使用其中之一

driver.find_element_by_class_name('Required')
# or
driver.find_element_by_class_name('userdata-firstname')

或者如果你想要兩者都使用css_selector

driver.find_element_by_css_selector('.Required.userdata-firstname')

您在示例中所指的 CSS 元素是li元素。 你不能用文本填充li元素。 您需要填寫一個input字段。 這些字段具有隨機設置的value_name屬性,以防止機器人使用它們。 您可以嘗試改用id屬性。

driver.find_element_by_id('idf').send_keys('james')

編輯:如果 id 更改,您也可以嘗試 xpath。 你可以這樣做:

driver.find_element_by_xpath('//li[@class="Required userdata-firstname"]/div/span/input').send_keys('james')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM