【问题标题】:Scrape Javascript OnClick button with Selenium使用 Selenium 抓取 Javascript OnClick 按钮
【发布时间】:2021-02-01 01:11:10
【问题描述】:

我正在努力从以下 URL 获取电子邮件地址:https://www.iolproperty.co.za/view-property.jsp?PID=2000026825 只有在单击“显示电子邮件地址”按钮后才能看到。但是,当我尝试单击并获取要抓取的电子邮件地址时,我收到“消息:元素单击被拦截:” 不知道我做错了什么。有什么建议么?提前谢谢!

contact_email = WebDriverWait(self.driver, 30).until(EC.element_to_be_clickable((By.XPATH, '//span[@id="viewagmail"]/a/@href'))).click()

【问题讨论】:

  • 您确定共享正确的代码吗? '//span[@id="viewagmail"]/a/@href' 不应该工作,因为它返回 @href 而不是 WebElement。请用确切的代码更新您的问题
  • @saraherceg element_to_be_clickable((By.XPATH)) 这不是 Python 代码吗?你已经标记了javascript??
  • @JaSON,我在没有@href 的情况下都尝试过,但仍然无法访问电子邮件..即使使用invisibility_of_element_located
  • 你能分享确切的异常日志吗?
  • 是的。试试'//span[@id="viewagmail" and @style="display: block;"]/a

标签: javascript selenium web-scraping xpath


【解决方案1】:

如果 DOM 元素不稳定/页面未加载,您是否尝试过 time sleep? 另外,从 xpath 中删除 href

(By.XPATH, '//span[@id="viewagmail"]/a')

然后使用该 xpath 获取带有 getText() 或 getAttribute("href") 的邮件

或者如果它发生在单击按钮并尝试获取电子邮件地址后,请尝试使用等待直到

invisibility_of_element_located((By.XPATH,'//a[text()='Show email address']'))

【讨论】:

  • 我尝试了invisibility_of_element_located((By.XPATH,'//a[text()='Show email address']')),但似乎没有单击按钮来获取电子邮件,我不知道为什么。它超时了..@ble
  • 你有没有第一次点击'//a[text()='显示电子邮件地址']'。然后等待它“隐形”,然后尝试通过从 '//span[@id="viewagmail"]/a' 获取文本来捕获电子邮件?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-01
  • 2011-04-20
  • 1970-01-01
  • 2019-11-15
  • 2019-02-22
  • 1970-01-01
  • 2014-02-22
相关资源
最近更新 更多