gpt4 book ai didi

python - 没有这样的元素 : Unable to locate element using chromedriver and Selenium in production environment

转载 作者:太空狗 更新时间:2023-10-29 20:20:59 25 4
gpt4 key购买 nike

我有一个 selenium chromedriver 问题,我无法弄清楚是什么原因造成的。几周前一切正常,突然这个错误开始出现。问题来自以下功能。

 def login_(browser):
try:
browser.get("some_url")
# user credentials
user = browser.find_element_by_xpath('//*[@id="username"]')
user.send_keys(config('user'))
password = browser.find_element_by_xpath('//*[@id="password"]')
password.send_keys(config('pass'))
login = browser.find_element_by_xpath('/html/body/div[1]/div/button')
login.send_keys("\n")
time.sleep(1)
sidebar = browser.find_element_by_xpath('//*[@id="sidebar"]/ul/li[1]/a')
sidebar.send_keys("\n")
app_submit = browser.find_element_by_xpath('//*[@id="sidebar"]/ul/li[1]/ul/li[1]/a')
app_submit.send_keys("\n")
except TimeoutException or NoSuchElementException:
raise LoginException

这个函数在开发环境(macOS 10.11)上没有问题,但是在生产环境下会报如下错误:

Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="sidebar"]/ul/li[1]/a"}
(Session info: headless chrome=67.0.3396.79)
(Driver info: chromedriver=2.40.565383 (76257d1ab79276b2d53ee97XXX),platform=Linux 4.4.0-116-generic x86_64)

我已经在每个环境中更新了 Chrome 和 chromedriver(分别为 v67 和 2.40)。我还给了它更多的 time.sleep(15)。但问题仍然存在。我最近的猜测是,可能是 webdriver 的初始化工作不正常:

def initiate_webdriver():
option = webdriver.ChromeOptions()
option.binary_location = config('GOOGLE_CHROME_BIN')
option.add_argument('--disable-gpu')
option.add_argument('window-size=1600,900')
option.add_argument('--no-sandbox')
if not config('DEBUG', cast=bool):
display = Display(visible=0, size=(1600, 900))
display.start()
option.add_argument("--headless")
else:
option.add_argument("--incognito")
return webdriver.Chrome(executable_path=config('CHROMEDRIVER_PATH'), chrome_options=option)

因为,如果 Display 不工作,那么可能没有提到的 sidebar 而是其他一些按钮。

所以我的问题是:有人遇到过类似的问题吗?有没有办法知道驱动程序正在寻找这样的元素时显示的页面是什么?

最佳答案

报告说在您提供登录后元素未找到错误,所以我认为登录失败并且页面被重定向到某个地方。您可以使用屏幕截图选项截取页面的屏幕截图,然后查看驱动程序加载了哪个页面。

driver.save_screenshot("path to save screen.jpeg")

您还可以保存原始 html 代码并检查同一页面。

Webdriver Screenshot

Using Selenium in Python to save a webpage on Firefox

关于python - 没有这样的元素 : Unable to locate element using chromedriver and Selenium in production environment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50954795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com