[英]Python selenium webdriver locate and click links
我在同一单元格中有一个包含四个链接的表列:
<td>
<a href="", onclick=showPricing('1234567','P', 'xyz123456', )>pdf,</a>
<a href="", onclick=showPricing('1234567','C', 'xyz123456', )>csv,</a>
<a href="", onclick=showPricing('1234567','X', 'xyz123456', )>xls,</a>
<a href="", onclick=showPricing('1234567','XP', 'xyz123456', )>xlsp</a>
</td>
我想单击第四个链接文本“ xlsp”,但不能。
我试过的
1) driver.find_element_by_xpath('//a[contains(@onclick, "xyz123456")]').click()
这当然会单击第一个:pdf
2) driver.find_element_by_xpath('//a[contains(@onclick, "xyz123456")][contains(text(), "xlsp")]').click()
这将选择第四个,但是出现错误“ ..errorElement无法滚动到视图中”
3) driver.find_elements_by_xpath('//a[contains(@onclick, "xyz123456")]')[3].click()
这将返回与2相同的错误)
任何建议表示赞赏。
要单击文本为xlsp的第四个链接,可以使用以下解决方案之一:
使用CSS_SELECTOR
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "td a[onclick*='XP']"))).click()
使用XPATH
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[contains(@onclick,'XP') and contains(.,'xlsp')]"))).click()
注意 :您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
我测试了多个选项,包括@DebanjanB的建议,并认为这是最可靠的解决方案:
driver.execute_script(dr.find_element_by_xpath('//a[contains(@onclick, "xyz123456")][contains(@onclick, "XP")]').get_attribute("onclick"))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.