【问题标题】:How to use Python Selenium如何使用 Python Selenium
【发布时间】:2021-07-30 10:32:18
【问题描述】:

我有一段 HTML 代码,可让您在点击按钮后将电子邮件放入输入字段(单击按钮后出现文本字段):

<div class="column-left w-col w-col-5">
<label class="radio-button-field-2 left w-radio">
<input type="radio" id="paypal" name="payout" value="paypal" data-name="payout" required="" class="w-form-formradioinput radio-button w-radio-input">
<span for="paypal" class="radio-button-label-2 w-form-label">PayPal-Konto</span>
</label>
</div>

<div class="block-payout-paypal" style="">
<input type="email" class="text-field-2 w-input" maxlength="256" name="paypal-email-2" data-name="Paypal Email 2" placeholder="max.moritz@beispiel.com" id="paypal-email" required="">
</div>

我现在的目标是编写一个脚本,允许我单击按钮,然后将输入字段归档。该网站是:https://gruenkraft-zufriedenheit.de/ 我要查找的按钮名为:PayPal-Konto

【问题讨论】:

标签: python python-3.x selenium urlencode


【解决方案1】:

当(PayPal-Konto)按钮被点击时,你会看到一个输入,你可以在下面的代码的帮助下找到它。

driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get("https://gruenkraft-zufriedenheit.de/")
wait = WebDriverWait(driver, 10)
wait.until(EC.visibility_of_element_located((By.XPATH, "//span[text()='PayPal-Konto']"))).click()#ActionChains(driver).move_to_element(wait.until(EC.visibility_of_element_located((By.XPATH, "//span[text()='PayPal-Konto']")))).click().perform()
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "input[name='paypal-email-2']"))).send_keys('some-email@gmail.com')

进口:

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.webdriver.common.action_chains import ActionChains

【讨论】:

  • 感谢您的回答?但为什么我必须滚动?该复选框确实在我的 Python 代码中工作而无需滚动?!
  • 哦,是的,你是对的。当我这样做时,我不得不向下滚动,所以我认为自动化也会期望我们滚动,但它可以在没有滚动的情况下工作。也更新了代码。见上文,如果您遇到任何问题,请告诉我。
  • 嘿,我用 Selenium 编码只有 2 天。我必须删除什么?您的代码实际上是如何工作的?我首先认为我必须单击单选按钮,然后会出现输入文件。这不适用于我的代码。为什么会这样?你的好代码是如何解决这个问题的?
  • 请告诉我它是如何工作的。首先,您似乎要等到元素加载后才单击,然后在输入字段加载后输入?!但是我为什么要等呢?是因为样式表吗?
  • 是的,您的理解是正确的,我为什么要等待? - 为此,基本上当我们使用显式等待时,它会以 500 毫秒的间隔尝试查找 web 元素,直到代码中的指定时间。所以我想说,它比标准的 driver_find_element 更可靠,它不会等待并尝试立即单击导致 Selenium 中的脚本不稳定
【解决方案2】:

这对我有用:

from selenium import webdriver


chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--window-size=1420,1080')
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument("--disable-dev-shm-usage")
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get('https://gruenkraft-zufriedenheit.de/ ')
element = driver.find_element_by_tag_name('button_tag_name_youre_looking_for')
element.click()

从那时起,我使用 beautifulsoup 继续我需要做的事情

希望这会有所帮助:)

【讨论】:

    【解决方案3】:

    你也可以试试下面的代码。

      driver.find_element_by_xpath("//span[text()='PayPal-Konto']").click()
      driver.find_element_by_id("paypal-email").send_keys("text")
    

    根据 cmets 更新。

    【讨论】:

      猜你喜欢
      • 2013-07-06
      • 2021-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-01
      相关资源
      最近更新 更多