为什么selenium找不到ID为的元素,即使它不在iframe中?

mftmpeh8  于 2023-01-02  发布在  其他
关注(0)|答案(2)|浏览(118)

我正在尝试制作一个自动登录GitHub的程序。我只找到了登录选项。之后,我就找不到用户名字段了。我已经确认了元素肯定不在a/an(i)框架中。我已经尝试了css-selector的替代方法。
下面是我尝试的代码:

from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options

chrome_opt = Options()
chrome_opt.add_experimental_option("detach", True)  # type: ignore[unknown]

auto = Chrome(options=chrome_opt)
auto.get("https://github.com")

signin_link = auto.find_element("link text", "Sign in")
signin_link.click()

username = auto.find_element("id", "login_field")
username.send_keys("ArnabRollin")  # type: ignore[unknown]

# FIXME

这里有类型忽略注解是因为VS代码中的"严格模式"类型检查。另外,在尝试运行它5次之后,它终于工作了,但是当我再次运行它时,它没有工作。

bxjv4tth

bxjv4tth1#

  • 注意,我不确定这是道德刮这个网站,而且,他们有验证码 *.

您可以使用此CSS选择器:

username = auto.find_element(By.CSS_SELECTOR, "input.js-login-field")

此外,当您转到github.com并单击login时,URL将更改为/loginhttps://github.com/login

amrnrhlw

amrnrhlw2#

现在,您的代码正在查找页面https://github.com中的元素-方法get()中使用的元素
而不是点击元素的链接,得到它与webdriver:

signin_link = auto.find_element("link text", "Sign in")
signin_link.click()

使用

signin_link = auto.find_element("link text", "Sign in").get_attribute('href')
auto.get(signin_link)

auto.get(url2)将保存新的页面上下文到驱动程序中.登录完成后,将需要新的页面上下文

相关问题