我在Selenium中找不到元素

2024-09-27 21:25:52 发布

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

这是链接https://webmail1.hostinger.com/

我想找到2个输入框并输入我的电子邮件和密码,但我无法访问它们。我可以通过检查页面很容易地找到它们,但是我无法通过xpath、选择器、id等找到它们

我认为它们可能在一个框架内,我在页面内的框架中获得了成功,但没有任何效果

我还尝试插入一个等待期,以防有东西要加载,但这并没有解决问题。 以下是我的代码的相关部分目前的情况:

driver.execute_script("window.open('https://webmail1.hostinger.com/');)
sleep(10)

iframes = driver.find_elements_by_tag_name("iframe")
driver.switch_to.frame(iframes[0])

element = WebDriverWait(driver, 30).until(
       EC.presence_of_element_located((By.XPATH, "/html/body/div[1]/div[1]/form/table/tbody/tr[1]/td[2]/input"))
    )

element.send_keys("test")

谢谢你的帮助


Tags: httpsdivcom框架密码链接电子邮件driver
3条回答

按id查找元素应该有效。如果需要等待页面加载,可以使用位于的元素的EC.presence\u。不要设置硬编码的等待时间

   ` try:
        element_present = EC.presence_of_element_located((By.ID, 'rcmloginuser'))
        WebDriverWait(driver, timeout).until(element_present)
        user_name = driver.find_element_by_id('rcmloginuser')
        pass_word = driver.find_element_by_id('rcmloginpwd')
        user_name.send_keys(user)
        pass_word.send_keys(password)
        submit_1 = driver.find_element_by_id('rcmloginsubmit h_webmail-login_page-login_button')
        submit_1.click()
    except TimeoutException:
        sys.exit(1) `

如果您想转到一个URL并获取id,然后用python提交,您应该这样做。您的标记不在iframe中,我们使用webdriver waitis而不是time.sleep()

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome("location of webdriver")
URL ='https://webmail1.hostinger.com/'

driver.get(URL)

WebDriverWait(driver, 30).until(
 EC.presence_of_element_located(By.ID('rcmloginuser'))).send_keys('your username')

WebDriverWait(driver, 30).until(
 EC.presence_of_element_located(By.ID('rcmloginpwd'))).send_keys('your pass')

WebDriverWait(driver, 30).until(
 EC.presence_of_element_located(By.CLASS_NAME('button mainaction submit'))).click()

“execute_script”是一种javascript方法,用于查找用户可能无法访问的元素,用于查找元素而不是打开网站。我还找到了输入框的id

使用driver.get(URL)代替

from selenium import webdriver

driver = webdriver.Chrome("location of webdriver")
URL ='https://webmail1.hostinger.com/'

driver.get(URL)

driver.find_element_by_id('rcmloginuser').send_keys('your username')
driver.find_element_by_id('rcmloginpwd').send_keys('your password')

相关问题 更多 >

    热门问题