繁体   English   中英

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

[英]Selenium Python find element partial link text

我正在尝试使用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> 

为了保密起见,我必须删除URL的某些部分,但是,这不应影响问题的回答。

谢谢。

您可以使用CSS选择器:

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

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

感谢您的答复。 就像@Andersson提到的那样,结果是该窗口位于不同的框架中。

我在find_element之前使用以下代码解决了该问题:driver.switch_to.frame('ptModFrame_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()

查找属性时,请确保使用单数““ element”。 喜欢:

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

不:

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

希望这可以帮助。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM