python - 如何使用 selenium python chromedriver 循环访问多个 url 并在新选项卡中打开 url

标签 python selenium selenium-chromedriver

我试图在循环中打开基于 link_text 找到的 URL。下面是我正在尝试使用的程序。 实际上,发生了什么,实际上在该页面上我有 3 次详细信息,有时会是 4 次(它是动态的)。

更新的代码:

from selenium.webdriver.support import ui
import time
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from selenium.common.exceptions import NoSuchElementException
from selenium import webdriver
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(chrome_options=options, executable_path='C:\chromedriver_win32\chromedriver.exe')
driver.maximize_window()
driver.get("https://xxxxxx/blogs/")
if driver.find_element_by_xpath("(//span[@class='ui-datepicker-month'][contains(.,'May')])[1]"):        
    # get the number of details to click
    addr = driver.find_elements_by_link_text('Details')
    urls = [v.get_attribute("href") for v in addr]
    for x in range(1, len(urls) + 1):
        driver.execute_script("window.open();")
        driver.switch_to.window(driver.window_handles[x])
        driver.get(urls[x - 1])`

输出是:

它工作正常,在新选项卡中打开所有详细信息 href。

更新 2: 根据 Dmitri T 代码,现在可以在新选项卡中打开所有详细信息 href :) 感谢您的帮助。我想尝试的最后一个是在 datepicker 循环中,我已将日期硬编码为 //span[@class='ui-datepicker-month'][contains(.,'May')])[1] “ 五月。我如何循环遍历这个,即单击每天的意思。单击 5 月 1 日,在每个新选项卡中打开所有“详细信息”href,再次转到主网址,单击 5 月 2 日,执行相同的东西...在新选项卡中打开所有“详细信息”href...等等...我正在尝试编写代码...让您知道结果。谢谢专家。

最佳答案

  1. 使用For loopaddr list 迭代 URL
  2. 使用get_attribute从 Web 元素中提取 URL 的函数

假设上面的提示您需要修改代码,例如:

addr = driver.find_elements_by_link_text('Details')
urls = [v.get_attribute("href") for v in addr]
for x in range(1, len(urls) + 1):
    driver.execute_script("window.open();")
    driver.switch_to.window(driver.window_handles[x])
    driver.get(urls[x - 1])

您可能还需要考虑重新实现您的测试以使用 Page Object pattern - 这样,如果您将测试逻辑与 UI 部分分开,维护起来会更容易。

关于python - 如何使用 selenium python chromedriver 循环访问多个 url 并在新选项卡中打开 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56064231/

相关文章:

python - Python可以打印函数定义吗?

python - python2.5中的Exception_Record问题

Java PhantomJS NETWORK_ERR XMLHttpRequest 异常 101

python - 按钮未被点击

python - 当列名不同时如何将数据框附加到另一个数据框(具有相同的列大小)

python - Xpath 在第一个 html 标记后获取文本

selenium - Zombie.js 使用什么浏览器?

java - 没有一个浏览器能够启动并获取 java.lang.NullPointerException 并以 -1 退出进程

selenium - 通过 Jenkins 上的 Selenium 执行测试套件时出现错误 [SEVERE] : Timed out receiving message from renderer: 20. 000

java - WebElement在浏览器中使用cssSelector、xpath可定位,虽然不为null,但为NotPresent、NotClickable、NotEnabled