我已经创建了main.py
和login.py
,然后我尝试将两个文件链接在一起。我不知道如何正确链接这两个文件。
我正在使用硒,并且程序有效,但是它打开了2个Chrome Windows(我只想打开一个(,然后,第二个窗口可以很好地运行,但是当它停止执行登录文件时,此错误来:
Traceback (most recent call last):
File "C:/Users/alebu/PycharmProjects/selenium/Main.py", line 9, in <module>
Login.login()
File "C:UsersalebuPycharmProjectsseleniumLogin.py", line 6, in login
Main.browser.find_element_by_link_text('Log in').click()
File "C:UsersalebuPycharmProjectsseleniumvenvlibsite-
packagesseleniumwebdriverremotewebdriver.py", line 419, in
find_element_by_link_text
return self.find_element(by=By.LINK_TEXT, value=link_text)
File "C:UsersalebuPycharmProjectsseleniumvenvlibsite-
packagesseleniumwebdriverremotewebdriver.py", line 955, in find_element
'value': value})['value']
File "C:UsersalebuPycharmProjectsseleniumvenvlibsite-
packagesseleniumwebdriverremotewebdriver.py", line 312, in execute
self.error_handler.check_response(response)
File "C:UsersalebuPycharmProjectsseleniumvenvlibsite-
packagesseleniumwebdriverremoteerrorhandler.py", line 242, in
check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element:
Unable to locate element: {"method":"link text","selector":"Log in"}
(Session info: chrome=64.0.3282.167)
(Driver info: chromedriver=2.35.528161
(5b82f2d2aae0ca24b877009200ced9065a772e73),platform=Windows NT 10.0.16299
x86_64)
Process finished with exit code 1
可能我在变量上做错了什么main.py
from selenium import webdriver
import Login
driver_location = "C:webDriverschromedriver.exe"
options = webdriver.ChromeOptions()
options.add_argument('--lang=en')
browser = webdriver.Chrome(executable_path=driver_location,
chrome_options=options)
Login.login()
login.py
def login():
import Main
from time import sleep
Main.browser.get('https://www.instagram.com')
Main.browser.find_element_by_link_text('Log in').click()
Main.browser.find_element_by_name('username').send_keys('*******')
Main.browser.find_element_by_name('password').send_keys(********')
Main.browser.find_element_by_xpath('//form/span/button[text()="Log
in"]').click()
sleep(3)
Main.browser.find_element_by_link_text('Not Now').click()
sleep(2)
print("Logged In")
很奇怪的是:在该程序在一个唯一文件中效果完美之前。
我建议您阅读有关import
在Python中如何工作的材料。
要快速获得正常工作的功能,您不应在登录功能中进行import Main
。尝试将驱动程序作为参数传递给您的login
函数中的参数(注意:将浏览器作为参数传递而不是导入Main
之后,您将不再需要使用Main.browser
,只需browser
(:
from time import sleep
def login(browser):
browser.get('https://www.instagram.com')
然后,当您从main
调用login
时,您将需要通过browser
作为参数:
Login.login(browser)
这应该解决两个浏览器打开的问题。如果找不到Log in
链接的问题,请阅读此问题,并提出一个新问题,如果您清楚地了解它的工作原理并需要更多帮助。