使用带有JavaScript的Python通过Selenium使WebElement可见

时间:2014-09-08 13:38:58

标签: javascript python css selenium selenium-webdriver

我正在尝试通过selenium上传png。我的问题是,我需要使用的输入对于selenium是不可见的,但对用户不是。在Selenium的FAQ中,他们告诉我使用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

但这也行不通,我收到语法错误

2 个答案:

答案 0 :(得分:4)

驱动程序实例上有一个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)

答案 1 :(得分:0)

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

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