Javascript Selenium单击GDPR单击按钮

Javascript Selenium单击GDPR单击按钮,javascript,python,selenium,web-scraping,geckodriver,Javascript,Python,Selenium,Web Scraping,Geckodriver,我试图通过编程方式单击按钮,在ubuntu服务器上运行脚本,以访问网站内容。我正试图到达该网站与 这是我的代码: driver=webdriver.Firefox(可执行文件路径=“/home/ubuntu/.linuxbrew/cillar/geckodriver/0.26.0/bin/geckodriver”,options=options) 数据=[] #在[34]中: #单击GDPR全宽横幅 start_time=datetime.now() 驱动程序。获取(“http://some_

我试图通过编程方式单击按钮,在ubuntu服务器上运行脚本,以访问网站内容。我正试图到达该网站与

这是我的代码:


driver=webdriver.Firefox(可执行文件路径=“/home/ubuntu/.linuxbrew/cillar/geckodriver/0.26.0/bin/geckodriver”,options=options)
数据=[]
#在[34]中:
#单击GDPR全宽横幅
start_time=datetime.now()
驱动程序。获取(“http://some_web_site.here/")
时间。睡眠(10)
#gdpr\u按钮=驱动程序。通过链接文本查找元素(“继续”)
#gdpr_button=驱动程序。通过xpath(“//button[text()=”Continue“])查找元素
驱动程序。通过xpath(//input[@style='order:2'和@onclick='sendanderirect()')查找元素。单击()
#//输入[@onclick='sendAndRedirect()']
#继续
然而,我无法到达元素并获得

selenium.common.exceptions.TimeoutException: Message: connection refused

如何访问GDPR表单中的“继续”按钮?感谢您的帮助

所需元素是动态元素,因此要在元素上找到/
click()
,您需要引导WebDriverWait使
元素可单击()
,并且您可以使用以下任一选项:

  • 使用
    CSS\u选择器

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[onclick^='sendAndRedirect']"))).click()
    
  • 使用XPATH和innerText事件:

  • 使用
    XPATH
    和onclick事件:

  • 注意:您必须添加以下导入:

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

不要睡觉:等待你需要的元素@Mike'Pomax'Kamermans是的,这就是下面的解决方案所建议的。然而,问题也在于网站开始屏蔽我的IP。我会在周末完整地阅读文档,但现在我只需要一行代码就可以理解为什么连接失败了。谢谢如果您正在使用Selenium对您的网站进行自动化测试,请尊重他们的robots.txt-除非您拥有/控制它,否则不要对其进行自动化测试。或者冒着成为糟糕用户的风险,真的=/谢谢。成功了!然而,问题也在于从我的IP请求。
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[starts-with(@onclick, 'sendAndRedirect')]"))).click()
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC