0

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"属性,我将如何在 python 版本的 selenium 中执行此操作?

4

4 回答 4

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)
于 2021-02-15T07:18:18.493 回答
0

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

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

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

driver.execute_script("arguments[0].removeAttribute('style')",elem)
于 2021-02-15T06:35:17.780 回答
0

要删除包含您需要使用诱导WebDriverWaitstyle属性,您可以使用以下任一Locator Strategiesdisplay: none;removeAttribute()presence_of_element_located()

  • 使用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']"))))
    

参考

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

于 2021-02-15T08:50:15.453 回答
0

您可以按照以下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")

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

于 2021-02-15T05:33:55.163 回答