PythonSelenium在浏览器更改时找不到元素

2024-09-30 04:33:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个脚本,用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),然后应该在页面上输入用户名。但是,我得到一个错误:

^{pr2}$

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

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首先单击的链接会打开一个新的选项卡。这是问题的一部分吗?在


Tags: pathhttpsorgbrowseridwwwseleniumusername
1条回答
网友
1楼 · 发布于 2024-09-30 04:33:11

我想出来了。因为点击的链接打开了一个新的标签。Selenium正在搜索上一个选项卡上的元素。我使用了window_handles和{},如下所示:

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')

相关问题 更多 >

    热门问题