繁体   English   中英

硒文本以隐藏形式输入

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM