当前位置: 首页 > 知识库问答 >
问题:

在Python中使用Selenium浏览链接[重复]

张俊茂
2023-03-14

我正试图从一个通过“下一步”按钮链接了多个页面的站点中获取数据

后续页面URL与上一页面URL没有对应关系

(在这种情况下,修改路径可以解决问题)

这就是我打算做的-

1.从初始URL开始

2.提取信息

3.点击NEXT

重复2次和3次

具体来说,我想知道如何在单击时获取新页面URL

这是我到目前为止想出来的

def startWebDriver():
    global driver
    options = Options()
    options.add_argument("--disable-extensions")
    driver = webdriver.Chrome(executable_path = '/path/to/driver/chromedriver_linux64/chromedriver',options=options)

#URL of the initial page
driver.get('https://openi.nlm.nih.gov/detailedresult.php?img=CXR1_1_IM-0001-3001&query=&coll=cxr&req=4&npos=1')

time.sleep(4)

#XPATH of the "NEXT" button
element = driver.find_element_by_xpath('//*[@id="imageClassM"]/div/a[2]/img').click()

任何帮助都将不胜感激

共有3个答案

黄英韶
2023-03-14
driver.current_url()

您可能需要先等待页面加载。

姬振濂
2023-03-14

也许你可以试试这样:

from selenium import webdriver
from selenium.webdriver import ChromeOptions
import time

if __name__ == "__main__":
    options = ChromeOptions()
    options.add_argument("--disable-extensions")
    #start driver
    driver = webdriver.Chrome(options=options)
    #load first page
    driver.get('https://openi.nlm.nih.gov/detailedresult.php?img=CXR1_1_IM-0001-3001&query=&coll=cxr&req=4&npos=1')
    for i in range(3): #However many of these links to click
        time.sleep(4) # let each page load
        driver.find_element_by_xpath('//*[@id="imageClassM"]/div/a[2]/img').click()
        print(driver.current_url)

这为我加载页面(我删除了你关于chrome驱动程序路径的位,因为我的驱动程序在同一个文件夹中)。但是它确实得到了一个错误,看起来它对driver.find很生气_element_by_xpath('//*[@id="ImageClassM"]/div/a[2]/img')。单击()说:

硒。常见的例外情况。ElementNotVisibleException:消息:元素不可见

我不知道如何修复,因为我没有看到网页上的“下一步”按钮。。。不过我相信你能弄明白!

宰父淳
2023-03-14

如果你想在点击下一步后得到你所在页面的网址,试试这个。

print(browser.current_url)

print(driver.current_url)
 类似资料:
  • 问题内容: 在Selenium选项(在Firefox上)中,我可以找到 。 是否可以使用此选项在 Chromium浏览器 (而非Chrome)中运行Selenium测试? 问题答案: 是。用于镀铬 您可以使用的其他选项是 custom, chrome(注意:这不是Google chrome,仅适用于Firefox模式), googlechrome, iexplore。请查看硒文档以获取模式的完整列

  • 问题内容: 我如何在默认浏览器中单击按钮以打开以下链接: button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { open("www.google.com”); // just what is the ‘open’ method? } }); ? 问题答案: 使用方法。

  • 问题内容: 我在Python中使用Selenium尝试单击鼠标悬停在该下拉菜单上时出现的下拉菜单中的链接。这是下拉菜单信息: 我试图单击“ a href”标签中的“文档”链接。当我将鼠标悬停在菜单上时,代码更改如下: 您可以在第二个ul标签中看到“ visible :: hidden”部分消失了。 我使用以下代码在页面上找到了元素: 如果我尝试使用以下方法单击下载按钮: 我收到一个错误,指出该元素

  • 我试图找到一个网页上的所有超链接,链接文本也在列表中,页脚名称。我想点击链接,等待(稍后会放入验证检查),导航回来,然后点击allLinksHrefs列表中的下一个链接(其中应该包含所有必要的网页链接元素)。目前,我能够找到第一个链接,单击它,导航回来,但随后测试失败。我使用硒WebDriver与C#。提前感谢。

  • 我想运行和控制一个浏览器窗口从一个web应用程序,以自动化的一些事情(如帐户创建等)在另一个网站。 所以我的问题是,有没有一种方法可以直接从浏览器使用selenium来实现它,在这种情况下如何实现它? 我知道有selenium-webdriver for JS,但在常见的用例中,我们将它与Node.JS一起使用。 WebDriver介绍建议这是可能的: 它的主要目的是允许web作者编写测试,使用户

  • 我最近实现了shouldInterceptRequest方法来检测链接的时间“http://sitemercado.com.br/valida“点击在android浏览器中打开它,而不是在webview中内部打开,直到它工作为止。链接在浏览器中打开,但当我回来查看webview应用程序时,它也被加载了,我希望它只在浏览器中加载。 我的代码如下: 我哪里做错了?