繁体   English   中英

如何通过Selenium和Python查找动态元素

[英]How to locate a dynamic element through Selenium and Python

我在win10和firefox中使用python和Selenium Webdriver编写了一个爬虫。
我在以下位置无法理解该页面:

https://irs.thsrc.com.tw/IMINT/

该页面有一个弹出消息框。 弹出消息框中的链接的xpath为:

//html/body/div[2]/form[1]/div[2]/div[1]/div[1]/div[1]/div[1]/span[1]/a[1]

selenium webdriver返回的用于Firefox的html源文件不包括该消息框的标记。 因此,我发送r = requests.get('https://irs.thsrc.com.tw/IMIT/')再次获取html源文档,然后在html中获取标签。

在获得带有弹出消息框标签的新html源文档之后,我注意到该消息框的style:"display:none"
我不确定这如何影响webdriver的返回值。

应该禁用所有可操作的标签。
但是webdriver告诉我,在我找到它们并带有xpath的tag元素后,它们都已显示并启用。
当我使用webdriver在上面的xpath中在弹出消息框中找到链接时,webdriver说找不到该元素。 在这种情况下,我无法使用webdriver在弹出的消息框中单击a-链接。 有谁知道如何使WebDriver返回标签元素的真实状态? 例如,我希望webdriver告诉我所有元素都被禁用,除了a-link和弹出消息框中的确认按钮。
任何答案和建议将不胜感激。

您所指的弹出消息框将使您了解Cookie分析和其他跟踪技术,并且您需要在元素上click()带有文本的click() ,因为我同意element_to_be_clickable()诱导WebDriverWait ,并且您可以使用以下解决方案:

  • 使用CSS_SELECTOR

     WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.button_main#btn-confirm"))).click() 
  • 使用XPATH

     WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='button_main' and @id='btn-confirm']"))).click() 
  • 注意 :您必须添加以下导入:

     from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC 

暂无
暂无

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

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