首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >selenium.common.exceptions.InvalidArgumentException:消息:无效参数:使用find_element(‘用户名’) Selenium Python的无效定位器错误

selenium.common.exceptions.InvalidArgumentException:消息:无效参数:使用find_element(‘用户名’) Selenium Python的无效定位器错误
EN

Stack Overflow用户
提问于 2022-02-13 02:10:43
回答 1查看 11K关注 0票数 1

我使用下面的代码运行python3.9。当我运行脚本时,我会得到错误消息。不知道我错过了什么。这个元素被称为用户名。

代码语言:javascript
复制
  File "/Users/user/Documents/PycharmProjects/webscrapping/app/webscraping.py", line 19, in <module>
    login = driver.find_element("username")   File "/Users/user/Documents/VENV/webscrapping/lib/python3.9/site-packages/selenium/webdriver/remote/webdriver.py", line 1244, in find_element
    return self.execute(Command.FIND_ELEMENT, {   File "/Users/user/Documents/VENV/webscrapping/lib/python3.9/site-packages/selenium/webdriver/remote/webdriver.py", line 424, in execute
    self.error_handler.check_response(response)
    File "/Users/user/Documents/VENV/webscrapping/lib/python3.9/site-packages/selenium/webdriver/remote/errorhandler.py", line 247, in check_response
    raise exception_class(message, screen, stacktrace) selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: invalid locator   (Session info: chrome=98.0.4758.80) Stacktrace: 0   chromedriver                        0x0000000102a5c3c9 chromedriver + 5018569 1   chromedriver                        0x00000001029e7333 chromedriver + 4539187 2   chromedriver             0x00000001025bca88 chromedriver + 170632 3   chromedriver              0x00000001025f0d81 chromedriver + 384385 4   chromedriver              0x00000001025f14f1 chromedriver + 386289 5   chromedriver              0x00000001026238b4 chromedriver + 592052 6   chromedriver              0x000000010260e80d chromedriver + 505869 7   chromedriver              0x0000000102621604 chromedriver + 583172 8   chromedriver              0x000000010260e6d3 chromedriver + 505555 9   chromedriver              0x00000001025e495e chromedriver + 334174 10  chromedriver              0x00000001025e5935 chromedriver + 338229 11  chromedriver              0x0000000102a181ee chromedriver + 4739566 12  chromedriver             0x0000000102a31f51 chromedriver + 4845393 13  chromedriver             0x0000000102a37928 chromedriver + 4868392 14  chromedriver             0x0000000102a32a7a chromedriver + 4848250 15  chromedriver             0x0000000102a0cc31 chromedriver + 4693041 16  chromedriver             0x0000000102a4d978 chromedriver + 4958584 17  chromedriver             0x0000000102a4db01 chromedriver + 4958977 18  chromedriver             0x0000000102a63795 chromedriver + 5048213 19  libsystem_pthread.dylib  0x00007ff80f7a24f4 _pthread_start + 125 20  libsystem_pthread.dylib    0x00007ff80f79e00f thread_start + 15

法典审判:

代码语言:javascript
复制
import os
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

CURRENT_DIR = os.getcwd()
print(f"Current Dir is {CURRENT_DIR}")

driver = webdriver.Chrome(f"{CURRENT_DIR}/chromedriver")

url = 'https://somewebsite.com/login2/'
driver.get(url)

time.sleep(2)
login = driver.find_element('username')

login.send_keys('myusername@somewebsite.com')
login.send_keys(Keys.RETURN)

time.sleep(5)
driver.quit()

HTML im试图获得:

代码语言:javascript
复制
<div class="sc-dnqmqq jomEGJ" data-reactid=".0.1.0.2.1.0.0.0">
  <label class="sc-iwsKbI hOobUj" for="username" data-reactid=".0.1.0.2.1.0.0.0.0">
    <span data-reactid=".0.1.0.2.1.0.0.0.0.0">Username</span>
  </label>
</div>
EN

回答 1

Stack Overflow用户

发布于 2022-02-13 23:26:20

find_element()

找到一个给定By策略的元素和一个定位器,其中这两个参数都是强制性的。

因此,您必须传递By类,这是一组受支持的以及定位器。

解决方案

实际上,您的代码行将是:

如果用户名是属性值,则为

Driver.find_element=(By.CLASS_NAME,“用户名”)

如果用户名是属性值,则为

Driver.find_element=(By.ID,“用户名”)

如果用户名是属性值,则为

Driver.find_element=(By.NAME,“用户名”)

如果用户名是属性值,则为

Driver.find_element=(By.LINK_TEXT,“用户名”)

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71097378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档