“站点 url”中出现错误:未捕获的类型错误:无法使用 Selenium 和 Python 读取未定义的属性“getColomnSet”

IT技术 javascript python selenium selenium-webdriver webdriver
2021-02-06 19:39:10

我正在尝试使用 Selenium for Python 或者 Chrome webdriver 来自动下载文件。

我的程序一直运行到最后一步(单击“下载”按钮),此时会触发一个带有文本的对话框:

“'站点 url' 中出现错误:未捕获的类型错误:无法读取 undefined41 的属性 'getColomnSet'”

这个错误是什么意思,最可能的原因是什么?

作为参考,这里是我的程序的最后几个命令:

try:
    elem = wait.until(EC.presence_of_element_located((By.ID,'element_1_id')))
finally:
    elem1 = driver.find_element_by_id('element_1_id')
    elem2 = driver.find_element_by_id('element_2_id')
    action = ActionChains(driver).move_to_element(elem1).move_to_element(elem2)
    action.perform()
    elem2.click()
2个回答

这个错误信息...

An error has occured in 'site url': Uncaught TypeError: Cannot read property 'getColomnSet' of undefined

...暗示您的程序在尝试下载所需文件无法读取属性getColomnSet

可能的主要问题是js在客户端完全呈现HTML DOM之前调用了下载文档

相关的HTML,多一点你之前的代码行错误堆栈跟踪会让我们对出了什么问题有更多的了解。

解决方案

  • 您可以在讨论之后引入一些措施来等待完整的DOM 树呈现:
  • 几个事实:
    • 在您的代码试验中,我没有看到您与元素进行交互,(By.ID,'element_1_id')因此您可能可以删除presence_of_element_located()for 元素的步骤(By.ID,'element_1_id')
    • 如果您仍然需要presence_of_element_located((By.ID,'element_1_id'))捕获异常并启动所需的步骤。
    • 当你调用move_to_element()elem1elem2时,阔步向前调用perform()需要引起WebDriverWaitexpected_conditionselement_to_be_clickable(locator)

tl;博士(参考文献)

@arassi Upvote 这个/任何对您有用的答案,以造福未来的读者。
2021-04-01 19:39:10

尝试以下操作 - 它适用于 Salesforce Lightning UI 屏幕:

 WebElement element = driver.findElement(By.id("your ID"));
 JavascriptExecutor executor = (JavascriptExecutor)driver;
 executor.executeScript("arguments[0].click();", element);