セレン+ Pythonの自動化99-明確な空の入力ボックスには、()の問題を解決することができませんでした

序文

セレンを使用する場合、UIオートメーションを行うとポップアップウィンドウ上の入力ボックスのいくつかは、明確に()メソッドは無効である使用して、テキストを入力することがわかりました。
これは、入力文字列が空でない後、再び入力につながりますが、不正確な結果が得られ、入力の長いリストの後ろに続きます。
いくつかの試みの後、最初のクリック()入力ボックスをクリックし、入力するか、または無効見つけ、以下の二つの方法の最終解決するためには、

  • 使用した後は、それを入力し、入力ボックスをダブルクリックして、すべてのテキストを選択し、
  • JSを使用してクリアテキスト入力ボックス

問題の説明

いくつかのポップアップページで、テキスト入力ボックスを入力し、入力が初めてのように私は、テストデータを入力し、正常であることができます:ヨーヨー

第二に、私は、テキストを入力し、テストデータを変更したい、最初のクリア:長いです

結果は、テキストボックスが有効ではありませんクリアし、入力された文字列は、二回蓄積されています

方法1:入力ボックスをダブルクリック

最初のパッケージング要素法をダブルクリックしbase.pyファイルを書き込み

from selenium.webdriver.support.ui import WebDriverWait
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select
import time

class Base():
    # # 作者:上海悠悠,QQ交流群:750815713

    def __init__(self, driver):
        self.driver = driver

    def find(self, locator):
        '''查找元素,loctor = ("id", "kw")'''
        element = WebDriverWait(self.driver, 30, 1).until(EC.presence_of_element_located(locator))
        return element

    def click(self, locator):
        '''点击元素'''
        self.find(locator).click()

    def double_click(self,locator):
        '''双击事件'''
        element = self.find(locator)
        ActionChains(self.driver).double_click(element).perform()

    def send(self, locator, text):
        '''发送文本'''
        self.find(locator).send_keys(text)

コードを実行します。

# 作者:上海悠悠,QQ交流群:750815713

driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
baidu = Base(driver)
# 输入框
loc = ("id", "kw")
baidu.send(loc, "yoyo")
time.sleep(3)
# 方法一:双击
baidu.double_click(loc)
# 重新输入
baidu.send(loc, "上海-悠悠")

ダブルクリックした後、空ではない、それを再入力してください

方法2:JSテキストボックスをオフにします

第二の溶液のアイデアは、あなたがピットに限り、JSを解決するために使用することができるセレンと遭遇し、ユニバーサルJSを使用することができます。

# 作者:上海悠悠,QQ交流群:750815713
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
baidu = Base(driver)
# 输入框
loc = ("id", "kw")
baidu.send(loc, "yoyo")
time.sleep(3)
# # 方法一:双击
# baidu.double_click(loc)
# # 重新输入
# baidu.send(loc, "上海-悠悠")

# 方法二:万能的js
js = 'document.querySelector("#kw").value="";'
driver.execute_script(js)
baidu.send(loc, "上海-悠悠")

この方法は、問題マルチの問題よりも優れている、常に理由は明らかではない()解決するために行っていない、思考の変化が常に解決策を見つけることができます!

おすすめ

転載: www.cnblogs.com/yoyoketang/p/11516138.html