单击类名为 selenium 的元素

2024-01-12

我正在尝试从网站上抓取酒吧的营业时间。有一个酒吧列表,如果您导航到您可以找到营业时间。当我点击具有类名的元素时遇到问题。

我已经编写了代码来获取一个场所的营业时间,但是,我无法从第一个链接导航到每个场所。

当我获得一个场地的营业时间时,此代码有效

from selenium import webdriver

driver = webdriver.Firefox()

driver.get('https://www.designmynight.com/london/bars/soho/six-storeys')

hours = driver.find_element_by_xpath('//li[@id="hours"]')
hours.click()

hoursTable = driver.find_elements_by_css_selector("table.opening-times tr")
for row in hoursTable:
    print(row.text)

问题是当我尝试我无法点击每个链接。谁能看到我做错了什么吗?

from selenium import webdriver

driver = webdriver.Firefox()

driver.get('https://www.designmynight.com/london/search-results#!?type_of_venue=512b2019d5d190d2978c9ea9&type_of_venue=512b2019d5d190d2978c9ea8&type_of_venue=512b2019d5d190d2978c9ead&type_of_venue=512b2019d5d190d2978c9eaa&type_of_venue=512b2019d5d190d2978c9eab&type=&q=&radius=')

venue = driver.find_element_by_xpath('//a[@class="ng-binding"]')
venue.click()

//this should then lead me to the following link ->
driver.get('https://www.designmynight.com/london/bars/soho/six-storeys')

hours = driver.find_element_by_xpath('//li[@id="hours"]')
hours.click()

hoursTable = driver.find_elements_by_css_selector("table.opening-times tr")
for row in hoursTable:
    print(row.text)

所有链接与ng-binding类名是动态生成的,因此您需要等待链接出现DOM并且它也是可点击的:

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.webdriver.common.by import By
from selenium import webdriver

driver = webdriver.Firefox()

driver.get('https://www.designmynight.com/london/search-results#!?type_of_venue=512b2019d5d190d2978c9ea9&type_of_venue=512b2019d5d190d2978c9ea8&type_of_venue=512b2019d5d190d2978c9ead&type_of_venue=512b2019d5d190d2978c9eaa&type_of_venue=512b2019d5d190d2978c9eab&type=&q=&radius=')

venue = wait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//a[@class="ng-binding"]')))
venue.click()

但是,如果您想跟踪每个链接,我建议您不要单击这些链接,而是获取参考文献列表,然后打开每个链接,如下所示:

xpath = '//a[@class="ng-binding"]'
wait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, xpath)))
links = [venue.get_attribute('href') for venue in driver.find_elements_by_xpath(xpath)]

for link in links:
    driver.get(link)
    hours = driver.find_element_by_xpath('//li[@id="hours"]')
    hours.click()
    hoursTable = driver.find_elements_by_css_selector("table.opening-times tr")
    for row in hoursTable:
        print(row.text)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单击类名为 selenium 的元素 的相关文章

随机推荐

  • Android 方向变化

    我有一个简单的Activity called SingleTouchTest理解屏幕触摸 奇怪的是SingleTouchTest从我所处的任何方向开始 但旋转设备不会导致屏幕旋转 我的测试设备是运行 Android 4 0 3 的 Acer
  • 如何以编程方式合并具有潜在冲突的文本文件(ala git 或 svn 等)?

    作为较大项目的一部分 我希望能够获取两个文本主体并将它们交给合并算法 该算法返回自动合并结果 在更改不冲突的情况下 或抛出错误并且 可能 生成一个文本文档 其中突出显示冲突的更改 基本上 我只是想要一种编程方式来完成地球上每个源代码控制系统
  • 如何仅在精确的 url 匹配时重定向?

    我正在尝试使用 apache htaccess 进行重定向 我有以下代码 redirectMatch 301 user http clients mydomain com 它工作得很好 但我不想要 用户登录 被引导至 http client
  • JSF 中 的范围是什么?

    我曾两次看到先前浏览的页面中的变量可能会干扰或替换下游查看的页面中的变量 例如 h datatable var 那么 ui param 的范围是什么 有没有办法遏制它 它基本上在 EL 上下文中设置一个新的变量映射 也可以看看的源代码Par
  • mysql 和 mysql2 gem 有什么区别

    我曾经与mysql宝石 但现在我经常听说mysql2宝石 此外 它还包含在Gemfile默认情况下Rails 3 0 x 使用有什么区别和优点mysql2 gem 这是来自mysql2 宝石页面 https github com brian
  • 当到达 gdb 中的断点时是否可以停止所有其他线程的执行?

    那么 一旦我在某个线程中遇到断点 是否可以暂停其他线程直到我继续 在全停止模式下 当前发布版本支持的唯一模式 只要任何线程停止 由于断点或信号 GDB 就会停止所有线程 当您继续停止的线程时 所有其他线程也将继续 除非您这样做set sch
  • 如何将 EasyMock 模拟注入测试类私有字段

    我正在使用 EasyMock 创建模拟 它是测试类中的私有参数 没有设置器 之一 我尝试使用反射 但它不能正常工作 public class TestedClassTest Test public void test TestedClass
  • 如何将 Bitmap 转换为 Base64 字符串?

    我正在尝试捕获屏幕 然后将其转换为 Base64 字符串 这是我的代码 Rectangle bounds Screen GetBounds Point Empty Bitmap bitmap new Bitmap bounds Width
  • 将 SQL 注释添加到 Linq 生成的查询中,以便它在 SQL 探查器中可见

    我们想要在一个项目中使用 Linq to SQL 这是我们第一次使用 Linq 通常我们只使用存储过程调用 到目前为止 一切都运行良好 但 DBA 询问我们是否可以以在 Profiler 中可见的方式标记 Linq 生成的 SQL 查询 我
  • 使用 google_oauth2 获取“错误:redirect_uri_mismatch”

    该网址似乎是正确的 昨天更新 文件也是 omn iauth rb provider google oauth2 MY CLIENT ID apps googleusercontent com MY CLIENT SECRET scope g
  • create-react-app 子文件夹项目不会 lint

    在子文件夹中使用 create react app 引导的项目不会出现 lint 但是 如果我在 VSCode 中以 root 身份打开项目子文件夹 如下图所示 或者在 root 下设置一个新的 create react app 项目 则
  • 从 vlcj 播放器数组中播放视频

    我正在尝试播放以字符串形式提供的 MRL 列表中的视频 问题是 当我尝试运行该类时 面板列表显示带有按钮 只有一个面板工作 但播放按钮不起作用 其他面板也不起作用 尽管我故意留下了停止按钮 因为我没有向它们添加动作侦听器 我想要实现的是 当
  • 如何使用scala或python在apache Spark中运行多线程作业?

    我面临着与 Spark 并发相关的问题 这阻止了我在生产中使用它 但我知道有一种解决方法 我正在尝试使用订单历史记录对 700 万用户的 10 亿种产品运行 Spark ALS 首先 我获取不同用户的列表 然后对这些用户运行循环以获取推荐
  • Vue 组件未显示在 Laravel 中

    我的 vue 组件没有显示出来 我看不出哪里出了问题 我希望另一双眼睛能指出我哪里出了问题 我正在运行 npm run watch 并清除了缓存 我的应用程序 js First we will load all of this projec
  • 在Java中启动VLC并通过rc接口连接到它

    我已经看过这个帖子了 但我仍然遇到一个问题 在java中启动vlc播放器 https stackoverflow com questions 1731299 starting vlc player in java看来 VLC 的 Java
  • 在带有整数数组的 ArrayList 上使用 contains

    我有一个ArrayList
  • Scala Swing 新手

    我正在尝试为我正在做的应用程序创建一个登录窗口 我一整天都在寻找一个例子 但我似乎找不到任何有帮助的东西 我的基本结构如下 App scala object App extends SimpleSwingApplication val ui
  • 检查运行时是否支持 SSE [重复]

    这个问题在这里已经有答案了 我想检查运行时是否支持 SSE4 或 AVX 以便我的程序可以利用处理器特定的指令 而无需为每个处理器创建二进制文件 如果我可以在运行时确定它 我可以使用一个接口并在不同的指令集之间切换 GCC 有一种方法可以做
  • Jetpack Compose Lazy Column 单选

    我正在从服务器获取数据并将其显示在列表中 可以一键选择每个项目以显示按钮 但我无法关闭它 只能打开它 这是列表类的项目 data class Task val deviceName String val deviceId String va
  • 单击类名为 selenium 的元素

    我正在尝试从网站上抓取酒吧的营业时间 有一个酒吧列表 如果您导航到您可以找到营业时间 当我点击具有类名的元素时遇到问题 我已经编写了代码来获取一个场所的营业时间 但是 我无法从第一个链接导航到每个场所 当我获得一个场地的营业时间时 此代码有