【问题标题】:How to remove text from an input box and send new text using Python selenium?如何从输入框中删除文本并使用 Python selenium 发送新文本?
【发布时间】:2021-03-13 05:49:00
【问题描述】:

我想删除“Apple”并输入“Google”,然后点击“搜索”按钮。 这是网址:https://www.glassdoor.ca/Reviews/apple-reviews-SRCH_KE0,5.htm

公司输入框标签:

搜索按钮标签:

我正在使用以下代码:

element = browser.find_element_by_xpath('//input[@id="sc.keyword"]')
element.send_keys(Keys.CONTROL + "a")
element.send_keys(Keys.DELETE)
element.send_keys("Google")
browser.find_element_by_xpath('//button[@type="submit"]').click()

但是什么也没发生。有谁知道为什么?非常感谢!

[新] 我刚刚发现如果我跳过登录步骤,那么代码可以更改公司名称。

[最新开发] 当我添加一行代码以在登录后单击“搜索”按钮时,它可以工作。谢谢大家。

完整代码如下:

def open_default_page(target_folder):
    default_url = r"https://www.glassdoor.ca/Reviews/apple-reviews-SRCH_KE0,5.htm"
    browser.implicitly_wait(20)
    browser.maximize_window()
    browser.get(default_url)
    time.sleep(1)
    return browser

    
def enter_company(com_name):
# Enter the keyword:

    element = browser.find_element_by_xpath("//input[@placeholder='Company 
              Name']")

    element.send_keys(Keys.CONTROL + "a")
    element.send_keys(Keys.DELETE)
    element.send_keys(com_name)

    time.sleep(1)
    # click Search
    browser.find_element_by_xpath('//button[@type="submit"]').click()
    time.sleep(2)


def sign_in(browser):
    some code
    return browser

# Open the default page
target_folder = r"D:\somefolder"
browser = open_default_page(target_folder)
browser = sign_in(browser)


def main():
    sign_in(target_folder)
    enter_company("Google")
    # followed by some other further steps

if __name__ == "__main__":
   main()

【问题讨论】:

  • 可以试试.send_keys("")
  • 不起作用。谢谢。

标签: python-3.x selenium selenium-webdriver selenium-chromedriver


【解决方案1】:

你可以试试element.clear()。这是documentation

【讨论】:

  • 你能试试这个吗?等待元素可点击,点击它然后尝试清除文本。 element = WebDriverWait (driver, 10).until(EC.element_to_be_clickable((By.Xpath, //input[@id="sc.keyword"]))) element.click() element.clear()
  • 按照您的代码,收到以下错误消息:selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attach to the page document
  • 我打印了“点击”前的状态,发现元素可见: print("元素可见?" + str(element.is_displayed()))
【解决方案2】:

无法评论你的帖子,所以把我的建议放在这里。

刚刚“按原样”尝试了您的示例,它运行良好,没有任何更改。刚用过Chrome:

browser = webdriver.Chrome()
browser.get('https://www.glassdoor.ca/Reviews/apple-reviews-SRCH_KE0,5.htm')

【讨论】:

  • @VictorWang 最有可能的脚本因某些异常而失败。你能分享所有的执行输出吗?
  • 可能是因为我将一些代码打包成一个函数的方式。当我将所有代码放在函数之外时。他们工作正常。
  • 每个部分都可以正常工作。当我将它们组合成一个函数时。没有错误消息,但公司名称没有更改。
  • 我想通了。问题在于登录步骤。登录后,我点击“搜索”按钮刷新页面,没问题。我首先加载默认值作为设置默认搜索类型(即公司)的简单替代方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-11
  • 2017-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多