硒文本以隐藏形式输入

时间:2013-12-17 13:11:20

标签: python python-2.7 selenium selenium-webdriver

我正在尝试登录网站 但问题是,只有将鼠标指针悬停在它上面之后它才会起作用。

我试过这个

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)

正如我所说,只有当我悬停鼠标时,我才能通过此脚本登录(我的意思是首先运行此脚本并查看页面是否已完全加载,然后我快速将鼠标移到登录按钮上,我可以看到我的登录详细信息正由此脚本输入,但如果我不悬停,则其他方式将无法登录。

4 个答案:

答案 0 :(得分:1)

我不确定,但一旦尝试这个

     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()因为在你的网站上第一次点击使登录表格消失。所以第二次点击可以帮助我们..

答案 1 :(得分:1)

我已经这样解决了:

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()

以上代码适用于我。

答案 2 :(得分:0)

我在Java中使用名为JavascriptExecutor的类完成了类似的操作。使用此类,您可以执行javascript。您可以使用javascript单击或处理隐藏的元素,而无需打开窗口。不确定Python中是否存在相同内容。

答案 3 :(得分:0)

使用selenium-webdriver在JAVA中执行以下登录,希望它也适用于Python。

在执行登录操作之前,必须在登录元素上执行鼠标悬停。

Actions action = new Actions(driver);
WebElement e=driver.findElement(By.id("user_area"));

//action.moveToElement(e).build().perform();  

以上命令无法打开“登录”弹出窗口,因为默认情况下,在中心上执行任何元素上的悬停。不幸的是,Login|Request Access|Help是一个带有id="user_area"的单个html元素,并且在自动悬停移动到中心时突出显示请求访问。

action.moveToElement(e,10,0).build().perform();

因此,上述语句用于从元素的左上角给出偏移并悬停在登录上。

有关使用selenium-webdriver进行高级鼠标操作的更多信息,请参阅以下链接 http://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/interactions/Actions.html

检查函数moveToElement以更好地理解它。