Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Selenium中检测button.click()失败?_Python_Selenium_Selenium Chromedriver_Webdriverwait_Error Checking - Fatal编程技术网

Python 如何在Selenium中检测button.click()失败?

Python 如何在Selenium中检测button.click()失败?,python,selenium,selenium-chromedriver,webdriverwait,error-checking,Python,Selenium,Selenium Chromedriver,Webdriverwait,Error Checking,我有一个Selenium3Python脚本,用于为讨厌的调用归档。今天,一个恶棍用数字“0”(字面上的0)通过了。FTC网站拒绝了该号码,但我的脚本未能检测到故障 下面是我的Python脚本中驱动投诉过程的相关部分。拒绝该号码的FTC页面的。根据按钮没有返回值\u continue。单击()(如果我正确解析了文档,请参阅标题“用户输入-填写表单”) 我也买了这本书,但我在网上搜索时发现的Selenium点击结果是书中的两页。(这非常令人失望;尽管书名不同,但不推荐用于此类任务) 我的问题是,如何

我有一个Selenium3Python脚本,用于为讨厌的调用归档。今天,一个恶棍用数字“0”(字面上的0)通过了。FTC网站拒绝了该号码,但我的脚本未能检测到故障

下面是我的Python脚本中驱动投诉过程的相关部分。拒绝该号码的FTC页面的。根据
按钮没有返回值\u continue。单击()
(如果我正确解析了文档,请参阅标题“用户输入-填写表单”)

我也买了这本书,但我在网上搜索时发现的Selenium点击结果是书中的两页。(这非常令人失望;尽管书名不同,但不推荐用于此类任务)

我的问题是,如何使用Selenium 3检测故障


下面是导致问题的FTC页面的特定Javascript。它来自:

click()

from selenium.common.exceptions import WebDriverException

button_continue = driver.find_element_by_id("StepTwoSubmitButton")
try:
    button_continue.click()
except WebDriverException as e:
    print('oops. click failed')
    print(e)
click()

from selenium.common.exceptions import WebDriverException

button_continue = driver.find_element_by_id("StepTwoSubmitButton")
try:
    button_continue.click()
except WebDriverException as e:
    print('oops. click failed')
    print(e)
该元素是一个已启用的元素,因此在其上调用
click()
,理想情况下,您需要引导WebDriverWait使
元素成为可单击的()
,并将其包装在
try catch{}
中,您可以使用以下任一选项:

  • 使用
    CSS\u选择器

    try:
        WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name='StepTwoSubmitButton']"))).click()
    except TimeoutException as e:
        print("Element click failed")
    
  • 使用
    XPATH

    try:
        WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@name='StepTwoSubmitButton')]"))).click()
    except TimeoutException as e:
        print("Element click failed")
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.common.exceptions import TimeoutException
    
该元素是一个已启用的元素,因此对其调用
click()
,理想情况下,您需要将
元素的WebDriverWait引导为可单击()
,并将其包装在
try catch{}
中,您可以使用以下任一选项:

  • 使用
    CSS\u选择器

    try:
        WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name='StepTwoSubmitButton']"))).click()
    except TimeoutException as e:
        print("Element click failed")
    
  • 使用
    XPATH

    try:
        WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@name='StepTwoSubmitButton')]"))).click()
    except TimeoutException as e:
        print("Element click failed")
    
  • 注意:您必须添加以下导入:

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

谢谢。我绝对没有看到一个意外的例外。原谅我的无知。。。Python是否只在有处理程序的情况下抛出?如果您需要运行,我的脚本位于。谢谢。我绝对没有看到一个意外的例外。原谅我的无知。。。Python是否只在有处理程序的情况下抛出?如果您需要运行,我的脚本位于。您使用的selenium版本已经非常过时。。我很惊讶它能与chromium的那个版本一起工作。你应该用pip安装PyPI的最新版本。谢谢Corey。是的,老化的软件听起来差不多。我不想让皮普进入系统。它在我必须运行的生产web服务器上给我带来了太多的问题。最终,我在他们的GitHub上找到了bug报告,问题被解决了,因为它不会修复,并且评论说用户必须修复它们。我看不起这个坏掉的工具。pip已经和python的更新版本捆绑在一起了,所以你可能需要安装它。。您也可以在不使用pip的情况下安装最新的selenium。您使用的selenium版本已经非常过时。。我很惊讶它能与chromium的那个版本一起工作。你应该用pip安装PyPI的最新版本。谢谢Corey。是的,老化的软件听起来差不多。我不想让皮普进入系统。它在我必须运行的生产web服务器上给我带来了太多的问题。最终,我在他们的GitHub上找到了bug报告,问题被解决了,因为它不会修复,并且评论说用户必须修复它们。我看不起这个坏掉的工具。pip已经和python的更新版本捆绑在一起了,所以你可能需要安装它。。您还可以在不使用pip的情况下安装最新的selenium。