为了账号安全,请及时绑定邮箱和手机立即绑定

刮除隐藏元素

刮除隐藏元素

aluckdog 2021-05-30 06:00:26
我的问题是双重的:1) 我正在尝试使用下面的代码登录此页面,源在此处。可以使用我提供的凭据,该凭据将在28天后过期,但是为之后查看此内容的用户创建一个试用帐户相对容易。from selenium import webdriverdriver_path = 'Path to my downloaded chromedriver.exe file'url_login = 'https://www.findacode.com/signin.html'username = 'jd@mailinator.com'password = 'm%$)-Y95*^.1Gin+'options = webdriver.ChromeOptions()options.add_argument('headless')driver = webdriver.Chrome(executable_path=driver_path, chrome_options=options)driver.get(url_login)assert '_submit_check' in driver.page_sourcedriver.find_element_by_name('id').send_keys(username)driver.find_element_by_name('password').send_keys(password)driver.find_element_by_xpath("//input[@value='Sign In']").submit()我收到所有 3 个元素的以下错误:selenium.common.exceptions.ElementNotVisibleException: Message: element not visible我对 html/css/javscript 的命令没有那么强,但我尝试过使用每个线程的等待并收到超时。接下来打算从该线程尝试 ActionChains,但很想听听对此有更多了解的人如何继续。2)最终,我想通过在循环中改变代码(url 的最后 5 个字符)从这个url(源here)中抓取特定的代码历史数据。用户必须登录,因此我上面的第一个问题是,在浏览器中查看我想要的信息的方法是展开浅紫色的“代码历史”表。我需要的具体信息是“操作”列为“已添加”且“注释”列为“已添加代码”的任何行中的日期:Date       Action Notes 2018-01-01 Added  First appearance in code2017-02-01 Added  Code Added我在这里的问题是,由于我认为表格是隐藏的,因此需要通过单击来扩展该表格以显示我要查找的数据,我该如何进行?编辑 这里的代码、伪代码和评论来解释我的第二个问题。url_code = "https://www.findacode.com/code.php?set=CPT&c="driver.get(url_code+'0001U') # i'm presuming that this will preserve the login sessiondriver.find_element_by_id('history').click() # i intend for this to expand the Code History section and expose the table shown earlier in the post but it's not doing thatcheck whether the phrase "Code Added" occurs in page sourceif so, grab the date that is in the <td nowrap> tag that is 2 tags to the left如果无法使用Selenium,我可以在后两行中使用BeautifulSoup,但是我需要帮助了解为什么我看不到要抓取的数据
查看完整描述

2 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

有网页两种形式与投入@name="id",@name="password"以及“登录”按钮。第一个是隐藏的。您需要使用以下方式处理表单@name="login":


form = driver.find_element_by_name('login')

form.find_element_by_name('id').send_keys(username)

form.find_element_by_name('password').send_keys(password)

form.find_element_by_xpath("//input[@value='Sign In']").submit()


查看完整回答
反对 回复 2021-06-01
  • 2 回答
  • 0 关注
  • 110 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信