【问题标题】:Make WebElement visible via Selenium with Python with JavaScript通过 Selenium 和 Python 和 JavaScript 使 WebElement 可见
【发布时间】:2014-11-01 18:05:00
【问题描述】:

我正在尝试通过 selenium 上传 png。我的问题是,我需要使用的输入对 selenium 不可见,但对用户不可见。在 Selenium 的常见问题解答中,他们告诉我使用 JavascriptExcecutor,例如:

((JavascriptExecutor)driver).executeScript("arguments[0].style.visibility = 'visible'; arguments[0].style.height = '1px'; arguments[0].style.width = '1px'; arguments[0].style.opacity = 1", fileUploadElement);

我过去在 C# 中使用过它,并且它有效,但现在我正在努力将这种用法转换为 python。我会使用document.getElementByName() 函数,但输入没有名称,并且页面上不止一个。解决该问题的最佳方法是什么。我已经试过了

icon = element.find_element_by_css_selector("input")
script_befehl = icon+".style.visibility = 'visible'; "+icon+".style.height = '1px'; "+icon+".style.width = '1px'; "+icon+".style.opacity = 1

但这也不起作用,我遇到了语法错误

【问题讨论】:

  • 对 Selenium 不可见但对用户不可见?这是如何运作的?听起来有一个额外的步骤来“让它可见”你没有做。你确定它是隐形的?如果你与之交互,Selenium 会做什么?

标签: javascript python css selenium selenium-webdriver


【解决方案1】:

在我的例子中,元素的不可见性是由于样式中有display:none;。 所以解决方案是:

driver.execute_script("arguments[0].style.display = 'block';", element)

【讨论】:

    【解决方案2】:

    驱动实例上有一个execute_script()方法,参数以类似于C#的JavascriptExecutor的方式传递给它:

    icon = element.find_element_by_css_selector("input")
    driver.execute_script("arguments[0].style.visibility = 'visible'; arguments[0].style.height = '1px'; arguments[0].style.width = '1px'; arguments[0].style.opacity = 1", icon)
    

    【讨论】:

    • 这比想象的要容易,但是在脚本之后,webelement仍然不可见,还有其他方法可以上传我的文件吗?
    • @user3652291 嗯,让我们看看,你能尝试一下“actionchains”方法吗?请参阅:stackoverflow.com/a/7340952/771848。让我知道它是否有帮助。谢谢。
    • 我试过这样 ActionChains(driver).move_to_element(icon).send_keys_to_element(icon,largepic).perform() 但我收到错误:“元素内的偏移量无法滚动到视图中:( 72, 12.5)"
    • @user3652291 hm,你能分享网站的链接和你的代码吗?否则我会在黑暗中拍摄。谢谢。
    猜你喜欢
    • 2019-06-22
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    • 2018-12-01
    • 1970-01-01
    • 2019-10-12
    • 2016-07-18
    • 1970-01-01
    相关资源
    最近更新 更多