使用selenium根据输入[python]单击链接

时间:2017-06-21 10:45:37

标签: python html css selenium

我已经制作了一个带有selenium的程序,可以访问我的学校网站,登录,然后使用CSS选择器获取整个文本并将其打印出来。然后打印出所有可用的考试。但是,每次考试旁边都有一个下载链接,我试图创建一个带有考试名称的输入,然后让selenium单击与该考试相关的特定下载按钮。

我不太了解HTML,所以我会尽量清楚。

以下是代码和一些图片:

from selenium import webdriver

browser = webdriver.Chrome('/usr/local/bin/chromedriver')
browser.get('https://minatentor.hv.se/minatentor/')

username = browser.find_element_by_css_selector('#userNameInput')
password = browser.find_element_by_css_selector('#passwordInput')

username.send_keys(r"my_username")
password.send_keys('my_password')

password.submit()

tentor = browser.find_element_by_css_selector('#examTable > tbody')
print(tentor.text)
browser.close() 

这是网站的样子。我使用CSS选择器来获取此文本并将其打印出来('#examTable > tbody')。

This is how the website looks.

这是它在shell中打印的内容。

enter image description here

这是检查员的样子。

enter image description here

我使用<tbody>的CSS选择器来获取整个文本。每个<tr>...</tr>都是在图片上标记的行。 “Hämta”表示以瑞典语下载,因此这是下载按钮。

我希望能够使用课程名称(图片中的“Kursnamn”)编写输入,并使selenium按下与该课程名称相关联的下载按钮。像这样:

enter image description here

这可能吗?我希望我尽可能清楚!

1 个答案:

答案 0 :(得分:4)

无法测试的原因是没有HTML,但它看起来像这样。

s = raw_input("Kursnamn?")
download_item = browser.find_element_by_xpath('//tr[contains(text(), '+s+')]//a[@href]')

然后

download_item.click()