【问题标题】:.click() does nothing on debian vps selenium phantomjs.click() 在 debian vps selenium phantomjs 上什么也不做
【发布时间】:2017-12-14 13:27:48
【问题描述】:

我需要点击提交表单的按钮,使用 selenium 和 phantomjs webdriver。

我目前有以下代码在我的本地计算机上运行良好(在 archlinux 下)

driver.find_element_by_id("lbc_submit").click()

在调用此代码之前,我确保我点击的元素存在 selenium 预期条件。

当我在 debian vps 服务器上使用相同的 webdriver(两个相同的版本)执行相同的代码时,该元素存在,因为当我单击它时我没有异常,但没有任何反应。

这是输入的 html(在表单内):

<input class="button-blue" value="Valider mon annonce" name="create" id="lbc_submit" type="submit">

我尝试了以下方法,但都不起作用:

  • 使用 javascript 进行点击
  • 使用 javascript 提交
  • 将 phantomjs webdriver 更改为 chrome webdriver
  • 在单击之前等待睡眠以确保所有内容都已加载
  • 使用 .submit() 硒方法

编辑 - 更多信息

这是我单击的按钮所在的整个表单的 pastebin(第 172 行):

https://pastebin.com/ehax7mkQ

我的代码块:

def validate_ad(browser):
    if not adbot_utils.get_page(browser, "", By.ID, "lbc_submit"):
        return false
    browser.find_element_by_id("lbc_submit").click()
    return true

get_page 函数:

def get_page(browser, url, by_method, element_path):
    if url:
        browser.get(url)
    try:     
        WebDriverWait(browser,10).until(ec.presence_of_element_located((by_method, element_path)))
    except TimeoutException:
        if url:
            print_log("Failed to load page " + url, 0, __name__)
        else:
            print_log("Failed to load element [" + element_path + "]", __name__)
        return False
    return True

【问题讨论】:

  • 请添加 URL 或 HTML
  • 我用我点击的按钮的 html 编辑了我的帖子

标签: python selenium phantomjs


【解决方案1】:

而不是:

driver.find_element_by_id("lbc_submit").click()

试试:

  • xpath

    driver.find_element_by_xpath("//input[@class='button-blue' and @id='lbc_submit']").click()
    
  • css_selector

    driver.find_element_by_css_selector("input.button-blue#lbc_submit").click()
    

【讨论】:

  • @Epoch 请向我们展示更多outerHTML和您的代码块
  • 用包含我的按钮和代码块的表单的html编辑
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-19
  • 2018-01-02
  • 2018-07-26
  • 1970-01-01
  • 2017-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多