我尝试使用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;
出于保密目的,我不得不删除网址的某些部分,但是,它不应影响对问题的回答。
感谢。
答案 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')]")
。