使用 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]的主要内容,如果未能解决你的问题,请参考以下文章

使用 selenium 查找输入和按钮元素

使用 Selenium,如何根据关联标签单击单选按钮

AttributeError:“WebElement”对象没有属性“单击”错误尝试使用 Selenium Python 单击链接

是否可以使用 Selenium 动态创建链接并单击它?

如何使用 Selenium 和 NodeJS 在 Chrome 上模仿 URL 输入和 ENTER 键

发生动画时,Selenium FirefoxDriver 单击错误的链接