我需要单击收件箱中的确认邮件。但无法单击链接。
这是我的html和经过尝试的代码
<td bgcolor="#ffffff" style="padding:20px;">
<div style="color:rgb(0,0,0);font-size:16px;">
<strong>You are almost done!</strong><br><br>
To complete Sunday Lankadeepa E-Paper registration, please click the link below:
</div>
<br><br>
<div style="width:616px;">
<a href="http://Sundaylankadeepa.newspaperdirect.com/epaper/confirmmail.aspx?code=ZUZ3S2K17GR&rt=trial" rel="nofollow">
http://Sundaylankadeepa.newspaperdirect.com/epaper/confirmmail.aspx?code=ZUZ3K17GR&rt=trial</a>
</div>
<br><br>
If clicking the link doesn't work, please select and copy the entire link. Then open a browser, paste the link in the address bar, and press Enter or Return on your keyboard.
尝试过的代码...
text = "newspaperdirect"
element = driver.find_element_by_xpath('//a[contains(text(),"%s")]' % text)
element.click()
错误:
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element:
{"method":"xpath","selector":"//a[contains(text(),"newspaperdirect")]"}
(Session info: chrome=71.0.3578.98)
(Driver info: chromedriver=2.45.615291 (ec3682e3c9061c10f26ea9e5cdcf3c53f3f74387),
platform=Windows NT 6.2.9200 x86_64)
答案 0 :(得分:0)
添加一些等待并使用find_element_by_partial_link_text。
import time
from selenium import webdriver
browser = webdriver.Chrome(executable_path='/home/bitto/chromedriver')
url='file:///test.html' # url or .html file path here
text = "newspaperdirect"
browser.implicitly_wait(20) # seconds
browser.get(url)
browser.find_element_by_partial_link_text(text).click()
答案 1 :(得分:0)
文本/单词 newspaperdirect 是href
标签的<a>
属性的一部分,也是innerHTML
要单击元素,可以使用以下解决方案之一:
使用PARTIAL_LINK_TEXT
:
driver.find_element_by_partial_link_text("newspaperdirect").click()
使用CSS_SELECTOR
:
driver.find_element_by_css_selector("div>a[rel='nofollow'][href*='newspaperdirect']").click()
使用XPATH
:
driver.find_element_by_xpath("//div/a[@rel='nofollow' and contains(@href, 'newspaperdirect')]").click()
答案 2 :(得分:0)
您可以使用显式等待
wait = WebDriverWait(driver, 10)
element = wait.until(EC.element_to_be_clickable((By.XPATH, '//a[contains(@rel,'nofollow') and contains(@href, 'newspaperdirect')]')))