问题描述
我正在尝试完成一个简单的任务,即登录到销售导航器页面,此后,我可以继续尝试收集销售线索和客户数据,作为收集信息的练习.遵循此链接进行登录之后,我有了此脚本来完成任务
I am trying to achieve a simple task of signing into sales navigator page,after which I can proceed to try and scrap the leads and accounts data, as a exercise for scraping. Following this link for signing in, I have this script to achieve the task
browser = webdriver.Firefox(executable_path=r'D:\geckodriver\geckodriver.exe')
def login_linkedin(email_id,psswd):
sales_url = "https://www.linkedin.com/sales/login"
browser.get(sales_url)
elem_username = browser.find_element_by_id("username")
#elem_username = browser.find_element_by_name("session_key")
elem_username.send_keys(email_id)
elem_psswd = browser.find_element_by_id("password")
#elem_psswd = browser.find_element_by_name("session_password")
elem_psswd.send_keys(psswd)
elem_signin = find_element_by_class_name("login__form_action_container ").click()
if __name__ == "__main__":
login_linkedin("la","la")
通过检查用户名,密码和登录按钮(如下所示)字段的每个元素,我试图通过名称,类名和ID查找该元素,但始终以未找到元素结束错误.我可能会缺少什么?
By inspecting each element of the fields of username, password and the sign in button (shown below), I tried to find the element by name, class name and id, but always end up with the element not found error. What could I be missing?
用户名元素
<input id="username" name="session_key" type="text" aria-describedby="error-for-username" required="" validation="email|tel" autofocus="" aria-label="Email or Phone">
密码元素
<input id="password" type="password" aria-describedby="error-for-password" name="session_password" required="" validation="password" aria-label="Password">
登录按钮元素
<button class="btn__primary--large from__button--floating" type="submit" aria-label="Sign in">Sign in</button>
错误
Traceback (most recent call last):
File "D:\Freelancing\Scrap_sales_nav\code\my_code\scrap_accounts.py", line 40, in <module>
login_linkedin("la","la")
File "D:\Freelancing\Scrap_sales_nav\code\my_code\scrap_accounts.py", line 21, in login_linkedin
elem_username = browser.find_element_by_id("username")
File "C:\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 360, in find_element_by_id
return self.find_element(by=By.ID, value=id_)
File "C:\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 978, in find_element
'value': value})['value']
File "C:\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Python36\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: [id="username"]
推荐答案
问题是您要查找的是iframe,因此我们需要将硒指向iframe而不是标准网页.幸运的是,硒具有以下功能:switch_to_frame()
The issue is that what you're looking for is in an iFrame, we will therefore need to point selenium to the iframe instead of the standard webpage. Fortunately selenium has a function for this: switch_to_frame()
解决方案:
import time
browser = webdriver.Firefox(executable_path=r'D:\geckodriver\geckodriver.exe')
def login_linkedin(email_id, psswd):
sales_url = "https://www.linkedin.com/sales/login"
browser.get(sales_url)
# sleeping to give the page time to load
time.sleep(1)
# the two lines below will put us into the iframe
frame = browser.find_element_by_tag_name('iframe')
browser.switch_to_frame(frame)
# entering the username and password
elem_username = browser.find_element_by_id("username")
elem_username.send_keys(email_id)
elem_psswd = browser.find_element_by_id("password")
elem_psswd.send_keys(psswd)
# no need for a variable name, we can just click
browser.find_element_by_class_name("login__form_action_container ").click()
if __name__ == "__main__":
login_linkedin('email_id', 'psswd')
这篇关于登录到Sales navigator python selenium的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!