【问题标题】:Use selenium to click a link based on input [python]使用 selenium 根据输入单击链接 [python]
【发布时间】:2017-11-24 05:30:30
【问题描述】:

我使用 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 按下与该课程名称关联的下载按钮。像这样:

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

【问题讨论】:

    标签: python html css selenium


    【解决方案1】:

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

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

    然后

    download_item.click()
    

    【讨论】:

    • 谢谢,成功了!奇怪的是,它不适用于课程名称“GRUNDLÄGGANDE REDOVISNING”,而是课程代码“GLR100”。
    • 是的,先生,请注意这种字符,不要在 XPATH 中使用分音符号、重音符号等!并且小心文本输入出现多次
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 2021-12-03
    • 2019-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多