【问题标题】:How to remove an attribute from an element in selenium如何从 selenium 中的元素中删除属性
【发布时间】:2021-02-15 05:28:01
【问题描述】:

HTML:

<textarea id="g-recaptcha-response" name="g-recaptcha-response" class="g-recaptcha-response" 
style="width: 250px; height: 40px; border: 1px solid rgb(193, 193, 193); margin: 10px 25px; padding: 
0px; resize: none; display: none;"></textarea>

我正在尝试删除 "display: none" 属性,我将如何在 selenium 的 python 版本中执行此操作?

【问题讨论】:

    标签: python selenium-webdriver attributes recaptcha 2captcha


    【解决方案1】:

    您可以通过将display 属性替换为几乎任何内容来使输入reCaptcha 密钥的显示框可见!

    你可以这样做:

    driver = webdriver.Chrome()
    element = driver.find_element_by_id('g-recaptcha-response')
    driver.execute_script("arguments[0].setAttribute('style', 'display: true')", element)
    

    【讨论】:

      【解决方案2】:

      您可以按照以下2种方法进行操作

      String visibility = web.findElement(By.xpath("//your xpath")).getCssValue("display");
      
      

      您将获得显示值,然后您可以将其删除。 使用以下代码的其他方法。

      firefox = webdriver.Firefox()
      element = firefox.find_element_by_css_selector("this element css selector here")
      attributeValue = element.get_attribute("style")
      

      您将获得的样式元素并从中删除显示。

      【讨论】:

        【解决方案3】:

        只需将其设置为阻止以使其可见。

        driver.execute_script("arguments[0].style.display = 'block';",elem)
        

        删除将在 elem 是您的 web 元素的下方。

        driver.execute_script("arguments[0].removeAttribute('style')",elem)
        

        【讨论】:

          【解决方案4】:

          要删除包含 display: none;style 属性,您需要使用 removeAttribute() 诱导 WebDriverWait 用于 presence_of_element_located(),您可以使用其中任何一个以下Locator Strategies

          • 使用CSS_SELECTOR

            driver.execute_script("arguments[0].removeAttribute('style')", WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.CSS_SELECTOR, "textarea.g-recaptcha-response#g-recaptcha-response[name='g-recaptcha-response']"))))
            
          • 使用XPATH

            driver.execute_script("arguments[0].removeAttribute('style')", WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, "//textarea[@class='g-recaptcha-response' and @id='g-recaptcha-response'][@name='g-recaptcha-response']"))))
            

          参考文献

          您可以在以下位置找到一些相关的详细讨论:

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-10-21
            • 2021-09-18
            • 2016-01-22
            • 1970-01-01
            • 2019-04-21
            • 2013-09-17
            • 2018-01-25
            • 1970-01-01
            相关资源
            最近更新 更多