gpt4 book ai didi

当浏览器改变时Python Selenium无法找到元素

转载 作者:行者123 更新时间:2023-12-01 02:55:06 26 4
gpt4 key购买 nike

我正在编写一个脚本来使用 Selenium 自动填充一些字段。我遇到了这样的问题:如果脚本单击从原始 url 导航的按钮,则 Python 无法找到新页面上的元素。

例如:如果我使用 selenium 首先导航到此登录页面 ( https://www.emedny.org ) 并单击 ePaces 登录,然后尝试填写表单,则会收到错误。我运行的代码是:

from selenium import webdriver

browser = webdriver.Chrome(path)

keyed_path = r'https://www.emedny.org'
browser.get(keyed_path)

epaces_login = browser.find_element_by_css_selector('#targetContainer > a:nth-child(3)')
epaces_login.click()

username = browser.find_element_by_id('Username')
username.send_keys('test')

此代码打开 https://www.emedny.org ,单击一个按钮,将我们带到登录页面 ( https://www.emedny.org/epaces ),并且应该在页面上输入用户名。但是,我收到此错误:

NoSuchElementException: no such element: Unable to locate element: {"method":"id","selector":"Username"}
(Session info: chrome=56.0.2924.87)
(Driver info: chromedriver=2.29.461591 (62ebf098771772160f391d75e589dc567915b233),platform=Windows NT 6.3.9600 x86_64)

但是,如果我跳过登陆页面并直接打开登录页面,如以下代码所示:

from selenium import webdriver

browser = webdriver.Chrome(path)

keyed_path = r'https://www.emedny.org/epaces'
browser.get(keyed_path)

username = browser.find_element_by_id('Username')
username.send_keys('test')

然后代码运行良好,并按预期更新用户名字段。似乎 Selenium 可能在打开的 url 上搜索该 id。

以下是用户名字段的 HTML:

<input name="Username" type="text" maxlength="8" id="Username" class="inputText" size="13" onchange="javascript:validate(this)">

有什么建议吗?我尝试过 id、XPath、css 选择器、名称等。每次都会出现相同的错误。

编辑:selenium 首先单击的链接会打开一个新选项卡。这可能是问题的一部分吗?

最佳答案

我明白了。这是因为单击的链接打开了一个新选项卡。 Selenium 正在搜索上一个选项卡上的元素。我使用 window_handlesswitch_to_window 如下:

browser = webdriver.Chrome(path)


keyed_path = r'https://www.emedny.org'
browser.get(keyed_path)

print(browser.window_handles)

epaces_login = browser.find_element_by_css_selector('#targetContainer > a:nth-child(3)')
epaces_login.click()


browser.switch_to_window(browser.window_handles[1])

username = browser.find_element_by_id('Username')

username.send_keys('test')

关于当浏览器改变时Python Selenium无法找到元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44292672/

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