首页 > 编程问答 >使用 selenium 单击没有 id 的提交按钮

使用 selenium 单击没有 id 的提交按钮

时间:2024-08-03 16:55:53浏览次数:11  
标签:python selenium-webdriver web-scraping

我尝试使用提交功能单击提交按钮,但看不到结果。我要抓取的网站是

Jntuh

提交按钮有以下属性

<input type="submit" value="Submit">

我用过这个 .execute 脚本

Resultbrowser.execute_script("""document.getElementById("myForm").onsubmit();""")

我不知道该网站是否有提交功能

整个代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

link = 'http://results.jntuh.ac.in/jsp/SearchResult.jsp?degree=btech&examCode=1442&etype=r17&type=intgrade'
hallticket = "1780XXXXXX"
dobval = '1998-03-01'
with webdriver.Chrome() as Resultbrowser:

    Resultbrowser.get(link)
    Hallfield = Resultbrowser.find_element_by_name("htno")
    Hallfield.send_keys(hallticket)
    Hallfield.send_keys(Keys.RETURN)
    dob = Resultbrowser.find_element_by_class_name('hasDatepicker')
    dob.send_keys(dobval)
    dob.send_keys(Keys.RETURN)
    dob.send_keys(Keys.TAB)
    time.sleep(2)
    Resultbrowser.execute_script("""
    document.querySelector("#txtInput").value = document.querySelector("#txtCaptcha").value
    """)
    time.sleep(5)
    Resultbrowser.execute_script("""document.getElementById("myForm").onsubmit();""")

    time.sleep(10)

可以使用多种方法在 Selenium 中单击没有 ID 的提交按钮:

1. 使用 XPath:

  • XPath 是一种用于在 XML 和 HTML 文档中定位节点的语言。可以使用 XPath 根据其类型、值或周围元素定位提交按钮。

python Resultbrowser.find_element_by_xpath("//input[@value='Submit']").click()

此代码将找到其值为“Submit”的第一个 input 元素并点击它。

2. 使用 CSS 选择器:

  • CSS 选择器用于基于元素的属性、类、ID 等选择 HTML 元素。

python Resultbrowser.find_element_by_css_selector("input[type='submit']").click()

此代码将找到其类型为“submit”的第一个 input 元素并点击它。

3. 如果只有一个提交按钮:

  • 如果页面上只有一个提交按钮,则可以使用以下代码直接定位并点击它:

python Resultbrowser.find_element_by_tag_name("button").click()

修改后的代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

link = 'http://results.jntuh.ac.in/jsp/SearchResult.jsp?degree=btech&amp;examCode=1442&amp;etype=r17&amp;type=intgrade'
hallticket = "1780XXXXXX"
dobval = '1998-03-01'

with webdriver.Chrome() as Resultbrowser:

    Resultbrowser.get(link)

    Hallfield = Resultbrowser.find_element_by_name("htno")
    Hallfield.send_keys(hallticket)
    Hallfield.send_keys(Keys.RETURN)

    dob = Resultbrowser.find_element_by_class_name('hasDatepicker')
    dob.send_keys(dobval)
    dob.send_keys(Keys.RETURN)
    dob.send_keys(Keys.TAB)

    time.sleep(2)

    Resultbrowser.execute_script("""
    document.querySelector("#txtInput").value = document.querySelector("#txtCaptcha").value
    """)

    time.sleep(5)

    # 使用 XPath 点击提交按钮
    Resultbrowser.find_element_by_xpath("//input[@value='Submit']").click()

    time.sleep(10)

请选择最适合情况的方法。

标签:python,selenium-webdriver,web-scraping
From: 66849188

相关文章

  • Python中动态类和动态方法的创建与调用
    借助于python的动态语言特性,很容易对对象进行添加方法或者属性,这也是python的灵活之一。动态生成类的属性及其方法在某些情况可能要根据不同的参数来动态生成不同的实例方法、静态方法、类方法。下面的例子中则展示了如何动态地向类中添加属性和方法。importtypesclassPers......
  • Python学习中最常见的10个列表操作问题
    列表是Python中使用最多的一种数据结果,如何高效操作列表是提高代码运行效率的关键,这篇文章列出了10个常用的列表操作,希望对你有帮助。1、迭代列表时如何访问列表下标索引普通版:items=[8,23,45]forindexinrange(len(items)):print(index,"-->",items[index])​......
  • Python中定义(创建)、调用函数及返回值
    1.定义(创建)函数要调用一个函数,首先要定义它。在Python中使用关键字def来定义一个函数。函数通常由函数名、参数列表以及一系列语句组成的函数体构成的。函数定义的一般格式如下:def函数名(参数列表):函数体例如:defsayhello(): print('hello')最简单的函数:defm......
  • python用List的内建函数list.sort进行排序
    对List进行排序,Python提供了两个方法方法1用List的内建函数listsort进行排序listsort(func=None,key=None,reverse=False)Python实对List进行排序,Python提供了两个方法方法1.用List的内建函数list.sort进行排序list.sort(func=None,key=None,reverse=False)>>>list=......
  • 禁用 GIL 的 Python 3.13 非常慢
    我对python3.12.0与使用3.13.0b3标志编译的python--disable-gil进行了简单的性能测试。该程序使用ThreadPoolExecutor或ProcessPoolExecutor执行斐波那契数列的计算。引入禁用GIL的PEP文档表示,存在一些开销,主要是由于有偏差......
  • 有没有办法阻止 setUp() 为 python 测试用例中的每个测试方法启动浏览器?
    我正在练习编写Web自动化测试用例,并且编写了一些函数来测试登录、在用户主页中查找我的用户名以及测试GitHub的注销功能。然而,我通过经验和阅读了解到setUp()是在每个测试方法之前启动的,而我的问题是在每个测试方法之前它都会打开一个新的浏览器。我希望我的所有测......
  • 尝试使用Python抓取需要先登录的网站但没有成功
    我正在尝试抓取一个需要登录的网站(我的路由器GUI),但无论我做了什么,我都会反复返回登录站点的源代码,而不是成功登录后出现的页面。我做了一些阅读,并意识到我需要返回POST请求的答案。我想我找到了它们并返回了所需的值,但仍然-似乎没有任何效果。我使用https://curl.tri......
  • 给python初学者的一些建议
    写在开篇关于Python,可以这么说,这几年借着数据科学、机器学习与人工智能的东风,Python老树开新花,在风口浪尖上居高不下。Python之所以这么受大家的青睐,是因为它语言简洁,上手容易,让非计算机专业的人员也能快速上手,享受编程开发带来的便利和福利。但Python再简单,它也是一......
  • Python中15个递归函数经典案例解析
    1.阶乘计算阶乘是一个常见的递归应用,定义为n!=n*(n-1)*…*1。deffactorial(n):ifn==0:return1else:returnn*factorial(n-1)print(factorial(5))#输出:1202.斐波那契数列斐波那契数列的每一项都......
  • 如何使用 python (使用服务帐户)在应用程序脚本 Web 应用程序上触发 doGet()?
    我想从返回json的应用程序脚本Web应用程序触发doGet(e)事件。我们的网络应用程序无法在我们的组织域之外访问,因此需要服务帐户。我执行了下面的代码,但“发生错误:401客户端错误”fromgoogle.oauth2importservice_accountfromgoogle.auth.transport.requestsimpor......