username = driver.find_element_by_name("username")
username.send_keys("username")
我查看了登录页面的源代码,并看到: HTML snippet
然而,我两者都有错误 username = driver.find_element_by_name(" Email") 和 username = driver.find_element_by_name(" ember442")
错误说:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/anaconda/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 385, in find_element_by_name
return self.find_element(by=By.NAME, value=name)
File "/anaconda/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 791, in find_element
'value': value})['value']
File "/anaconda/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 256, in execute
self.error_handler.check_response(response)
File "/anaconda/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"name","selector":"Email"}
我在这里做错了什么?我唯一的另一个想法是使用其他命令之一来定位元素(find_element_by_id, find_element_by_name, find_element_by_xpath, find_element_by_link_text, find_element_by_partial_link_text, find_element_by_tag_name, find_element_by_class_name, find_element_by_css_selector)但那些似乎也不起作用。
答案 0 :(得分:1)
这是因为这些都不是元素名称。你应该使用:
username = driver.find_element_by_id("ember442")
答案 1 :(得分:0)
以下是您的问题的答案:
对于电子邮件,请尝试xpath为//input[@id='ember442']
:
username = driver.find_element_by_xpath("//input[@id='ember442']")
username.send_keys("username")
对于密码,请尝试xpath为//input[@id='ember443']
:
username = driver.find_element_by_xpath("//input[@id='ember443']")
username.send_keys("username")
如果这回答你的问题,请告诉我。
答案 2 :(得分:0)
知道了!我最终找到了一个related question(虽然使用的是Java)和答案中的一段代码:driver.findElement(By.xpath("//input[@name='name']"))
并将其修改为:username = driver.find_element_by_xpath("//input[@placeholder='Email']")
我想知道如何通过引用id名称(find_element_by_id
)来做到这一点,但这是一个特定于任务的问题,因此它现在可以使用了!
TLDR;我必须在find_element_by_xpath
中指定占位符名称。