在Python Web驱动程序中检索HTML元素对象

时间:2019-01-10 23:13:44

标签: python selenium

我正在尝试自动从我的Splunk帐户下载某些csv文件。不幸的是,我们没有API访问权限。

因此,我想到了为此使用Selenium Python驱动程序。

我安装了Selenium并将chrome驱动程序放在正确的路径中。

现在我要访问的第一页是Splunk的登录页面,如下所示

enter image description here

这是我使用Selenium的Python初始代码

import selenium
from selenium import webdriver

PATH= "https://splunk.com/account/login"

driver = webdriver.Chrome()
# Open the website
driver.get(path)


username_box = driver.find_element_by_name('username')

# Get the Password box object 
password_box = driver.find_element_by_name('password')


# Send id information for login
username_box.send_keys(USERNAME)
password_box.send_keys(PASSWORD)

# Click on the sign in button

sign_in_button=driver.find_element_by_link_text('Sign in')
sign_in_button.click()

在sign_in_button驱动程序之前,它工作得很好。这样就可以打开页面,并从user_name和password_element输入用户名和密码,但是在检索Sign In元素对象时,它无法检索该对象并引发错误:

NoSuchElementException: Message: no such element: Unable to locate element: {"method":"link text","selector":"Sign in"}
  (Session info: chrome=71.0.3578.98)

这是我在Chrome上进行检查时相应的“登录”按钮的HTML

enter image description here

因此,如您所见,它只有类和文本。没有名称和ID属性。

所以我先尝试了

driver.find_element_by_link_text('Sign in')

然后

driver.find_element_by_class_name('splButton-primary btn') 

,但无法检索“登录”按钮对象。

由于它无法单击和登录。

有人可以帮忙找回有关“登录按钮”的问题吗?

谢谢

2 个答案:

答案 0 :(得分:2)

var regex = new Regex(@"^[.]?[^.]+$", RegexOptions.IgnoreCase); 不是链接文本,而是Sign in属性,请尝试

value

答案 1 :(得分:1)

我无法访问该网站进行尝试,但是有一些建议... 首先,您的班级名称包括两个班级,请尝试仅使用一个班级:

driver.find_element_by_class_name('splButton-primary') 

或者,尝试专门查找输入:

driver.find_element_by_css_selector('input.splButton-primary')