Python Selenium:很难找到密码元素

时间:2018-10-02 08:32:14

标签: python selenium web-scraping selenium-chromedriver

我正在尝试首次使用Selenium以自动方式登录网站。我可以使用以下代码轻松找到电子邮件(用作用户名)元素:

enter image description here

但是,对于密码,没有id或name标记,因此我很难找到该元素。这是页面的源代码。密码元素在下面以灰色突出显示:

enter image description here

我尝试使用以下语句通过link_text和class_name定位password元素,但均失败了:

enter image description here

我想象通过XPath定位可能是这里的方法,但是我不确定语法(尤其是因为有很多div标签)。感谢您的协助。

3 个答案:

答案 0 :(得分:2)

request.passwordng-model属性,不是文本。

find_element_by_class_name收到一堂课,您尝试了三堂课。

使用css_selector查找元素:

通过request.password

driver.find_element_by_css_selector('[ng-model="request.password"]')

按班级

driver.find_element_by_css_selector('.form-control.ng-pristine.ng-valid')

答案 1 :(得分:0)

一种假设页面上没有其他密码元素的方法是找到所有输入标签,然后将其过滤为密码字段。

def getPassword(driver):
    inputs = driver.find_elements_by_tag_name('input')
    for input in inputs:
        if input.get_attribute('type')=='password':
            return input
    return None

Got syntax help from this question

答案 2 :(得分:0)

最好的方法是

driver.findElement(By.xpath("//input[@type='password'][@title='Password']")) 

尝试使用较少的类选择器,并使用id或标签。类可以与另一个元素相关联。抱歉,这是Java语言。如果需要,可以在python中找到它。