我已经制作了一个带有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'
)。
这是它在shell中打印的内容。
这是检查员的样子。
我使用<tbody>
的CSS选择器来获取整个文本。每个<tr>...</tr>
都是在图片上标记的行。 “Hämta”表示以瑞典语下载,因此这是下载按钮。
我希望能够使用课程名称(图片中的“Kursnamn”)编写输入,并使selenium按下与该课程名称相关联的下载按钮。像这样:
这可能吗?我希望我尽可能清楚!
答案 0 :(得分:4)
无法测试的原因是没有HTML,但它看起来像这样。
s = raw_input("Kursnamn?")
download_item = browser.find_element_by_xpath('//tr[contains(text(), '+s+')]//a[@href]')
然后
download_item.click()