Selenium Python查找元素部分链接文本

时间:2018-04-08 19:44:30

标签: python selenium click

我尝试使用Pythons Selenium模块点击其链接包含文字" xlsx"在它的最后。以下是我使用的代码和元素的详细信息。有人可以看看为什么Python无法找到这个元素?



driver.find_element_by_partial_link_text('xlsx').click()




这是元素细节:



<a name="URL$2" id="URL$2" ptlinktgt="pt_new" tabindex="43" onfocus="doFocus_win0(this,false,true);" href="http:******/HSC8_CNTRCT_ITEMS_IMPRVD-1479218.xlsx" onclick="window.open('http:********/HSC8_CNTRCT_ITEMS_IMPRVD-1479218.xlsx','','');cancelBubble(event);return false;" class="PSHYPERLINK">HSC8_CNTRCT_ITEMS_IMPRVD-1479218.xlsx</a>
&#13;
&#13;
&#13;

出于保密目的,我不得不删除网址的某些部分,但是,它不应影响对问题的回答。

感谢。

4 个答案:

答案 0 :(得分:1)

您可以使用CSS选择器:

driver.find_element_by_css_selector("a[href*='xlsx']")

如果仍无法找到该元素,我建议您使用wait语句,以确保该元素在您与之交互之前是可见的。

答案 1 :(得分:1)

感谢您的回复。事实证明,正如@Andersson所提到的,窗口处于不同的框架中。

我在find_element:driver.switch_to.frame(&#39; ptModFrame_0&#39;)之前使用以下代码解决了这个问题。

答案 2 :(得分:0)

您可以按类名(类名= PSHYPERLINK)获取它。

这应该有效:

import selenium
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

url = ''
driver = webdriver.Chrome('/path/to/chromedriver/executable')

if __name__=='__main__':
     driver.get(url)
     time.sleep(3)
     driver.find_element_by_class_name('PSHYPERLINK').click()

找到属性时,请务必使用单数“元素”。喜欢:

driver.find_element_by_class_name('PSHYPERLINK').click()

driver.find_elements_by_class_name('PSHYPERLINK').click()

希望这有帮助。

答案 3 :(得分:0)

请尝试: driver.find_element_by_xpath(".//a[contains(@href,'xlsx')]")