我已经创建了main.py
和login.py
,然后我尝试将这两个文件链接在一起。我不知道如何正确链接这两个文件。
我正在使用selenium并且该程序正常工作,但它打开2个镀铬窗口(当我想打开一个时)然后,第二个继续并且工作完美但是当它停止执行登录文件时突然出现此错误来了:
Traceback (most recent call last):
File "C:/Users/alebu/PycharmProjects/selenium/Main.py", line 9, in <module>
Login.login()
File "C:\Users\alebu\PycharmProjects\selenium\Login.py", line 6, in login
Main.browser.find_element_by_link_text('Log in').click()
File "C:\Users\alebu\PycharmProjects\selenium\venv\lib\site-
packages\selenium\webdriver\remote\webdriver.py", line 419, in
find_element_by_link_text
return self.find_element(by=By.LINK_TEXT, value=link_text)
File "C:\Users\alebu\PycharmProjects\selenium\venv\lib\site-
packages\selenium\webdriver\remote\webdriver.py", line 955, in find_element
'value': value})['value']
File "C:\Users\alebu\PycharmProjects\selenium\venv\lib\site-
packages\selenium\webdriver\remote\webdriver.py", line 312, in execute
self.error_handler.check_response(response)
File "C:\Users\alebu\PycharmProjects\selenium\venv\lib\site-
packages\selenium\webdriver\remote\errorhandler.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:\webDrivers\chromedriver.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")
奇怪的是:在程序进入一个独特的文件之前它完美无缺。
答案 0 :(得分:0)
我建议你阅读一些关于for(int i = 0; i < (a ? x : y); i++){}
如何在python here中工作的材料。
为了快速获得正常工作,您不应该在登录功能中import
。尝试将驱动程序作为参数传递到import Main
函数中(注意:在将浏览器作为参数传递而不是导入login
之后,您将不再需要使用Main
,只需Main.browser
):
browser
然后,当您从from time import sleep
def login(browser):
browser.get('https://www.instagram.com')
致电login
时,您需要传递main
作为参数:
browser
这应该可以解决您打开两个浏览器时遇到的问题。如果在找不到Login.login(browser)
链接的情况下问题仍然存在,请阅读this,如果您清楚了解其工作原理并需要更多帮助,请提出新问题。