我正在尝试通过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
但这也行不通,我收到语法错误
答案 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)