[英]selenium text input in a hidden form
我正在尝试登录一个网站,但问题是,直到我将鼠标指针悬停在它上面,它才起作用。
我已经试过了
loginform = driver.find_element_by_id('loginDiv')
if loginform.get_attribute('style') == 'display: none;':
print "check!!"
email = driver.find_element_by_id('username')
passwd = driver.find_element_by_id('passwd')
email.send_keys('my_email')
passwd.send_keys('my_pass')
passwd.send_keys(Keys.RETURN)
就像我说的那样,只有在将鼠标悬停时才能通过该脚本登录(我的意思是首先运行此脚本并查看页面是否已完全加载,然后我将鼠标快速移至登录按钮上方,然后才能看到登录详细信息是通过此脚本输入的,但是如果不进行其他操作,它将无法登录)。
我不确定,但是一旦尝试
options=driver.find_elements_by_class_name("user_area")
for option in options:
if(option.text=="Login")
option.click()
time.sleep(3)
option.click()
email = driver.find_element_by_id('username')
passwd = driver.find_element_by_id('passwd')
email.send_keys('my_email')
passwd.send_keys('my_pass')
passwd.send_keys(Keys.RETURN)
我写了option.click()两次,因为在您的站点中首先单击使登录表单消失。 因此,第二次点击可能会帮助我们。
我已经这样解决了:
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://pythondev.zyante.com/")
loginForm = driver.find_element_by_id("user_area")
loginLink = loginForm.find_element_by_tag_name("a")
webdriver.ActionChains(driver).move_to_element(loginLink).perform()
email = driver.find_element_by_id('username')
email.send_keys('my_email')
passwd = driver.find_element_by_id('passwd')
passwd.send_keys('my_pass')
button = loginForm.find_element_by_class_name("loginButton")
webdriver.ActionChains(driver).move_to_element(button).click().perform()
上面的代码对我有用。
我使用名为JavascriptExecutor的类在Java中完成了类似的操作。 使用此类,您可以执行javascript。 您可以使用javascript单击或处理隐藏的元素,而无需打开窗口。 不确定Python中是否存在相同的内容。
使用selenium-webdriver在JAVA中执行了以下登录,希望它也适用于Python。
在执行登录操作之前,必须在登录元素上执行鼠标悬停。
Actions action = new Actions(driver);
WebElement e=driver.findElement(By.id("user_area"));
//action.moveToElement(e).build().perform();
上面的命令无法打开“登录”弹出窗口,因为默认情况下,任何元素的悬停都在中心执行。 不幸的是,在UI上, Login|Request Access|Help
是一个具有id="user_area"
html元素,并且在悬停期间会自动移动到中心,从而突出显示Request Access。
action.moveToElement(e,10,0).build().perform();
因此,以上语句用于提供距元素左上角的偏移量并将鼠标悬停在Login上 。
要进一步了解使用selenium-webdriver进行的高级鼠标操作,请参阅以下链接http://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/interactions/Actions.html
检查功能moveToElement以更好地理解它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.