在Selenium Python

时间:2016-02-11 18:58:28

标签: python python-2.7 selenium-webdriver

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
elem = driver.switch_to_active_element()
elem.send_keys('a')

我想将密钥发送到页面上当前活动的元素,但我不知道如何从驱动程序获取活动元素。我需要它,因为该元素上没有名称,id,类等。我找到了Java代码,Python代码(上面写的),但没有结果。

这里是页面,对象""没有attrs。如何选择?

<div action-name="menu-holder" class="uiMenuButtonSelectionHolder">
    <a href="javascript:;" class="choiceMenuClose" action-name="choice-menu-close"></a>
    <div style="top: 0px; left: 0px;" class="uiInlineBlock uiMenuHolder">
    <div>
       <input type="text">
    </div>

2 个答案:

答案 0 :(得分:10)

在我遇到this link.

之前,我一直在努力解决这个问题

switch_to_active_element()已被弃用,我们应该使用switch_to.active_element

所以,它应该是:

elem = driver.switch_to.active_element

答案 1 :(得分:0)

您可以通过css选择器识别输入标签,如下所示。请查看this以更好地了解选择器

elem = driver.find_element_by_css_selector('div.uiInlineBlock input')
elem.send_keys('a')

选择器可以读取为input tag, descendant to the div with class name _uiInlineBlock_

希望你没有其他同一个类的div,在这种情况下你必须使用find_elements_by_css_selector并从返回的元素列表中选择你想要的元素send_keys至。

编辑:

如果元素不可见,您可以浏览使其可见的流程,也可以执行javascript来查找和设置值

driver.execute_script("document.querySelector('div.uiInlineBlock input').setAttribute('value', 'a');")