使用 selenium 根据输入单击链接 [python]
Posted
技术标签:
【中文标题】使用 selenium 根据输入单击链接 [python]【英文标题】:Use selenium to click a link based on input [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 按下与该课程名称关联的下载按钮。像这样:
这可能吗?我希望我尽可能清楚!
【问题讨论】:
【参考方案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 中使用分音符号、重音符号等!并且小心文本输入出现多次以上是关于使用 selenium 根据输入单击链接 [python]的主要内容,如果未能解决你的问题,请参考以下文章
AttributeError:“WebElement”对象没有属性“单击”错误尝试使用 Selenium Python 单击链接