【问题标题】:Selenium for driver.find_element_by_name() for Internet Explorer用于 Internet Explorer 的 driver.find_element_by_name() 的 Selenium
【发布时间】:2021-09-04 18:27:18
【问题描述】:

我正在接受在 Internet Explorer 中自动填写表单的培训。我为 Chrome 执行了以下代码,但我成功了,但对于 Internet Explorer,相同的代码失败了。我的代码是:

from selenium import webdriver
from webdriver_manager.microsoft import IEDriverManager

driver = webdriver.Ie(executable_path="C:/Program Files (x86)/IEDriverServer.exe", capabilities={'ignoreZoomSetting':True})

driver.get("https://rosamorel.com/ebook-copywriting-textos-persuasivos/")
nombre = "example"
email = "example@gmail.com"
accionar = driver.find_element_by_name("input_1.3")
accionar.send_keys(nombre)
accionar = driver.find_element_by_name("input_2")
accionar.send_keys(email)
accionar = driver.find_element_by_name("input_5.1")
accionar.click()

IE 打开,它得到了我想要的网站,但它停在那里,控制台中出现下一个错误:

Traceback (most recent call last):
  File "c:\Users\Abel\Documents\Ejercicios_python\web_scrapin_test copy.py", line 11, in <module>
    accionar = driver.find_element_by_name("input_1.3")
  File "C:\Users\Abel\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 496, in find_element_by_name     
    return self.find_element(by=By.NAME, value=name)
  File "C:\Users\Abel\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 976, in find_element
    return self.execute(Command.FIND_ELEMENT, {
  File "C:\Users\Abel\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:\Users\Abel\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response        
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: Unable to find element with name == input_1.3

我尝试了 .find_element_by_id 并且遇到了同样的问题。我不知道为什么,因为这种方法非常适用于 Chrome ¡。 有人可以帮忙吗?

【问题讨论】:

  • 您为什么使用 Internet Explorer?已停止支持,有什么具体原因吗?
  • 因为我的公司使用集成在 Internet Explorer 中的软件解决方案。它也适用于 Edge,但你甚至看不到代码,所以我想在 IE 中尝试。我希望我能在 Chrome 中做到这一点哈哈

标签: python python-3.x selenium selenium-webdriver selenium-iedriver


【解决方案1】:

您必须在访问这些元素之前添加等待/延迟。
请试试这个:

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

driver = webdriver.Ie(executable_path="C:/Program Files (x86)/IEDriverServer.exe", capabilities={'ignoreZoomSetting':True})
wait = WebDriverWait(driver, 20)

driver.get("https://rosamorel.com/ebook-copywriting-textos-persuasivos/")
nombre = "example"
email = "example@gmail.com"
wait.until(EC.visibility_of_element_located((By.NAME, "input_1.3"))).send_keys(nombre)

wait.until(EC.visibility_of_element_located((By.NAME, "input_2"))).send_keys(email)

wait.until(EC.visibility_of_element_located((By.NAME, "input_5.1"))).click()

如果 By.NAME 不起作用,请尝试 By.CSS_SELECTOR,如下所示:

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

driver = webdriver.Ie(executable_path="C:/Program Files (x86)/IEDriverServer.exe", capabilities={'ignoreZoomSetting':True})
wait = WebDriverWait(driver, 20)

driver.get("https://rosamorel.com/ebook-copywriting-textos-persuasivos/")
nombre = "example"
email = "example@gmail.com"
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "input[name='input_1.3']"))).send_keys(nombre)

wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "input[name='input_2']"))).send_keys(email)

wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "input[name='input_5.1']"))).click()

【讨论】:

  • 在这两种情况下我都会收到此错误:“selenium.common.exceptions.NoSuchWindowException: Message: Unable to find element on closed window”谢谢你的尝试=)
  • 从你的代码中我认为没有理由关闭窗口
猜你喜欢
  • 2012-08-19
  • 2015-12-04
  • 2014-08-24
  • 1970-01-01
  • 2023-03-19
  • 2011-04-28
  • 2020-11-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多