【问题标题】:Python Selenium javascript error: shape=rectangle is not supportedPython Selenium javascript 错误:不支持 shape=rectangle
【发布时间】:2020-08-20 17:35:04
【问题描述】:

我正在使用 python selenium 自动下载财务报告。为此,我必须使用这个虚拟键盘输入我的密码:

我正在尝试通过 xpath 点击我密码的每个字母:

object = driver.find_element_by_xpath('//*[@id="alphaKeyboard"]/area[13]')
object.click()

每个字母的XPath非常相似,只是改变了*area[]*里面的数字

但我收到以下错误:

selenium.common.exceptions.JavascriptException: Message: javascript error: shape=rectangle is not supported

我想这个问题与包含虚拟键盘的 shape='rectangle' 元素有关,每个字母的完整 html 元素看起来像这样,例如 letther 'F':

<area shape="rectangle" coords=" 72, 22, 93, 44" onclick="writeAlpha('F')" onmouseover="setHandCursor(document.alphaKeyboard)" onmouseout="setDefaultCursor(document.alphaKeyboard)">

对此有什么建议吗?

如果你想试试,我给你网址:

https://sucursalempresas.transaccionesbancolombia.com/SVE/control/BoleTransactional.bancolombia

【问题讨论】:

标签: javascript python selenium selenium-webdriver


【解决方案1】:

你有一个很大的捷径。

在你的元素中,你有:

onclick="writeAlpha('F')"

单击运行 javascript 函数 writeAlpha('F')。您可以直接运行该函数,而完全不必担心键盘或 xpath。

从 devtools 控制台运行它如下所示:

在 python 中你运行 javascript:

driver.execute_script("writeAlpha('F')")

您只需更新要发送的信件。


[更新] - 更进一步...

您可以将您的详细信息创建为字符串,将其拆分并使用如下循环发送:

driver = webdriver.Chrome()
driver.get("https://sucursalempresas.transaccionesbancolombia.com/SVE/control/BoleTransactional.bancolombia")

myKeys = "HELLOWORLD"
myKeys = myKeys.split()

for key in myKeys:
    driver.execute_script("writeAlpha('"+key+"')")

输出如下:

【讨论】:

  • 请注意...一般来说,如果您的脚本用于测试网站,您不会希望使用此方法,因为此方法会缩短 UI。
猜你喜欢
  • 1970-01-01
  • 2016-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
  • 2014-06-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多