使用Python + Selenium选择shelly

问题描述 投票:0回答:1

所以我对在 Python 中使用 Selenium 很陌生。我想访问特定网站上的 xpath。 要访问该网站,必须首先使用帐户登录,因此外人无法真正重现我的问题。

在尝试访问某些 xpath 之前,我读过一些有关切换到 iframe 的内容,但该网站使用其他内容而不是 iframe。

我想访问这个搜索字段的xpath,在右侧我们可以看到这个“shelly”的东西(见第一张图片)。

在第二张图片中,我们可以看到我想要到达的元素的 xpath,但是当我尝试将它与 Python/Selenium 一起使用时,它不会被识别......

我尝试了两个xpath(都不起作用):

//[@id="puik-search-bar"] 和 /html/body/shelly-app/main/div1/section/app-root/app-search-page/div/div/div/div/app-search-product/div/puik-card/div/ puik-search-bar//div/div2/input//

我也尝试过这样的事情:

driver.switch_to.frame(driver.find_element_by_class_name("shelly-app__page")) driver.switch_to.frame(driver.find_element_by_tag_name("shelly-app")) driver.switch_to.frame(1)

一段代码:

name =driver.find_element('xpath','//*[@id="puik-search-bar"]')
name.send_keys(sname)

访问此搜索栏的登录页面可以使用标准 selenium 功能自动化 但在登录页面(带有搜索栏的页面)之后,标准功能将无法使用

python-3.x selenium-webdriver xpath iframe selenium-chromedriver
1个回答
0
投票

我建议使用

selenium
,而不是使用
playwright
Playwright
是较新的 Python 库之一,非常适合 Web 浏览器自动化。

像这样安装

playwright
pip install playwright

并安装浏览器:

playwright install
。当您运行此命令时,
playwright
将开始下载 chromium、webkit 和 firefox。但是,您仍然可以使用 chrome 和 msedge,只需在通道上运行它即可。

例如:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    page.goto('https://example.com')
    page.locator('input#puik-search-bar').fill('text')
    browser.close()

如果您想启动 webkit 或 firefox,只需在这一行中将 chromium 替换为所需的名称即可:

browser = p.chromium.launch()
。如果你想运行 chrome 或 microsoft edge,只需添加一个通道参数:
browser = p.chromium.launch(channel="chrome")
,但不要将 chromium 更改为 msedge 或 chrome,它将启动所需的浏览器。

请注意,

playwright
默认以无头模式启动浏览器,因此您必须添加
headless=False
参数才能看到浏览器打开状态(主要用于测试)。

Playwright
允许同时使用xpath和CSS,在本例中,我使用CSS:
page.locator('input#puik-search-bar').fill('text')
,但如果你愿意,你也可以使用xpath,
playwright
会自动识别它。

我建议你使用

playwright
的原因是因为
selenium
已经很老了,而且网络驱动程序、查找文本字段、浏览器崩溃等方面存在一些问题。
Playwright
较新,是浏览器自动化更好的选择,并且支持除 python 之外的多种不同语言。

Playwright 文档:https://playwright.dev/python/docs/intro

© www.soinside.com 2019 - 2024. All rights reserved.