在弹出窗口中输入文本,无法使用python selenium查找元素

在弹出窗口中输入文本,无法使用python selenium查找元素,python,selenium-chromedriver,Python,Selenium Chromedriver,我试图在弹出窗口的用户名和密码框中输入一些文本 我假设有一个弹出窗口,所以我相信我已经切换到它了。我找不到任何可以选择的元素。我试过了 驱动程序。通过xpath(//input[@type='email'])查找元素 或 driver.通过xpath(//input[@placeholder='Username或Email Address'])查找元素 两次我都得到错误声明元素未找到: from selenium import webdriver from selenium.webdriver

我试图在弹出窗口的用户名和密码框中输入一些文本

我假设有一个弹出窗口,所以我相信我已经切换到它了。我找不到任何可以选择的元素。我试过了

驱动程序。通过xpath(//input[@type='email'])查找元素

driver.通过xpath(//input[@placeholder='Username或Email Address'])查找元素

两次我都得到错误声明元素未找到:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

driver = webdriver.Chrome()
driver.get("https://fantasy.espn.com/football/players/add?leagueId=1")
time.sleep(15)
driver.find_element_by_xpath("//input[@placeholder='Username or Email Address']")

弹出窗口正在
iframe
中加载。必须首先使用xpath或其他选择器查找其余字段

from selenium.webdriver import Chrome
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = Chrome('drivers/chromedriver')
driver.get('https://fantasy.espn.com/football/players/add?leagueId=1')
iframe_xpath = '//*[@id="disneyid-iframe"]'
iframe = WebDriverWait(driver, 30).until(
    EC.element_to_be_clickable(
        (By.XPATH, iframe_xpath)
    )
)
driver.switch_to_frame(iframe)
username_field = driver.find_element_by_xpath("//input[@type='email']")
password_field = driver.find_element_by_xpath("//input[@type='password']")
login_button = driver.find_element_by_xpath(
    '//*[@id="did-ui-view"]/div/section/section/form/section/div[3]/button'
) 
username_field.send_keys('username')
password_field .send_keys('password')
login_button.click()
编辑

寻找球员

from selenium.webdriver import Chrome
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
capabilities = DesiredCapabilities.CHROME
capabilities["pageLoadStrategy"] = "none"
driver = Chrome('drivers/chromedriver', desired_capabilities=capabilities)
driver.get('https://fantasy.espn.com/football/leaders')
player_xpath = '//*[@id="espn-analytics"]/div/div[5]/div[2]/div[1]/div[1]/div/div[2]/div[1]/div/div/div/input'
player_input = WebDriverWait(driver, 20).until(
    EC.element_to_be_clickable(
        (By.XPATH, player_xpath)
    )
)
player_input.send_keys('chris\n')

感谢这是有意义的,我尝试切换到iframe的方式是不正确的。在您发出“单击”命令后,它会按应有的方式转到页面。在这个页面上有一个文本框,我想输入信息。我没有看到任何有用的元素class=“form_ucontrol”value=”“>我尝试了time.sleep(20)player=driver.find_element_by_xpath(“//input[@placeholder='player Name']”)有没有其他方法可以让我这么做呢?谢谢,我一直想通过搜索找到,但我运气不好,你是如何找到索引的/div/div[5]/div[2]/div[1]/div[1]/div/div[2]/div[1]/div/div/div/div/input您如何找到[5]、[2]、[1]等?我找到了可以显示绝对路径的工具,但这是从根开始的。看来你是从espn分析开始的section@encore02您可以从chrome开发工具中获得它们。检查元素->右键单击->复制->复制xpath这是一个很好的信息,我正在查看其他工具以查找xpath。我的目标是把它放到一个脚本中。我注意到的问题不是我的xpath不正确,而是在登录后,我不得不更改为默认的iframe。从第二个脚本中,您可以输入玩家名称,并且您将获得玩家列表的下拉列表(如果删除)。问题是我可以发出一个命令来发送向下箭头,但它看起来需要鼠标点击名称来选择播放器。发送回车不起作用。我需要找到一种方法将鼠标移动到name+clik上