Python,2个文件中的变量和硒



我已经创建了main.pylogin.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链接的问题,请阅读此问题,并提出一个新问题,如果您清楚地了解它的工作原理并需要更多帮助。

最新更新