【发布时间】:2020-11-08 23:48:38
【问题描述】:
我正在尝试将 Selenium 与 Python 结合使用来自动登录 Autodesk GBS。我已经能够像这样访问“登录”框架:
driver.get("https://gbs.autodesk.com/GBS/")
btn = driver.find_element_by_link_text('Sign In')
btn.click()
我似乎无法访问随后弹出的用户名文本输入元素。我认为它在一个 iframe 中,但根据我得到的“NoSuchElementException”出现次数,页面上明显出现的 3 个 iframe 似乎都没有包含 id 为“userName”的元素。
我要访问的文本字段的 HTML 代码在这里:
<input id="userName" name="UserName" autocomplete="off" aria-label="Email text field" tabindex="1" placeholder="name@example.com" type="text" autofocus="autofocus" autocorrect="off" autocapitalize="off" data-val="true" data-val-required="Please enter an email" data-val-length-max="200" class="form-control customInput2 populated valid">
周围 iframe 的 HTML 代码(我认为)在这里:
<iframe frameborder="0" hspace="0" scrolling="no" src="/GBS/Authentication/Authenticate?redirectUrl=%2FGBS%2FProject&requestMode=Setup&isIframe=True" allowtransparency="true" style="border: none; width: 345px; height: 513px;">
...
</iframe>
我对 Selenium 和 Python 都很陌生,经过两天的尝试,我完全迷失了方向。任何帮助都会非常感激!
更新: 感谢下面 arunkvelu 和 arundeep chohan 的建议,我对我的代码进行了一些更改(完全在下面发布)。但是它仍然无法找到用户名字段(请参阅下面的错误)。有什么建议吗?
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait as wait
PATH = "C:\\Program Files (x86)\\chromedriver.exe"
driver = webdriver.Chrome(PATH)
driver.get("https://gbs.autodesk.com/GBS/")
btn = driver.find_element_by_link_text('Sign In')
btn.click()
wait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH, "//div[@id='oxygen-container']/iframe")))
username_field = driver.find_element_by_id("userName")
username_field.send_keys("test@mail.com")
driver.find_element_by_id("verify_user_btn").click()
password = driver.find_element_by_id("password")
password.send_keys("mypassword")
文件“...”,第 17 行,在 username_field = driver.find_element_by_id("userName") selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素:{“method”:“css selector”,“selector”:“[id="userName"]”} (会话信息:chrome=86.0.4240.183)
【问题讨论】:
标签: python selenium selenium-webdriver iframe webdriver