【发布时间】:2021-07-31 10:34:57
【问题描述】:
我有一个包含所有xpath 链接的列表
这是我的代码:
original_window = driver.current_window_handle
for stat in stats:
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, stat))).click()
WebDriverWait(driver, 10).until(EC.number_of_windows_to_be(2))
for window_handle in driver.window_handles:
if window_handle != original_window:
driver.switch_to.window(window_handle)
print(driver.current_url)
driver.close()
driver.switch_to.window(original_window)
print(driver.current_url)
break
time.sleep(15)
它第一次工作,但之后它给了我这个错误:
https://s5.sir.sportradar.com/sports4africa/fr/1/season/81152/headtohead/322375/90970/match/27122060
https://www.bountou1x2.com/sport.jsp
Traceback (most recent call last):
File "c:\Users\Hama\Documents\Python project\test3.py", line 45, in <module>
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, stat))).click()
File "C:\Users\Hama\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\support\wait.py", line 80, in until
raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message:
以下是 Stats 的定义方式:
stats = []
for a in driver.find_elements_by_tag_name("tr"):
aa = a.get_attribute("idavv")
if aa is not None:
aaa = "//*[@id=\"simple-row-box-prematch-" + aa + "\"]/td[6]/table/tbody/tr/td[1]"
stats.append(aaa)
如果我只让点击事件,代码可以像这样正常工作并打开所有窗口:
for stat in stats:
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, stat))).click()
time.sleep(15)
该错误仅在我尝试从旧窗口切换到新窗口以及从新窗口切换到旧窗口时出现,它仅在第一次时有效
我打印当前的 url 只是为了看看它是否正在像它一样切换
感谢大家的帮助,谢谢大家
【问题讨论】:
-
到目前为止,我只能说,而且您可能已经知道,
stat未发现可点击并在 10 秒后超时。你能包括你如何定义stats吗?还有你正在测试的页面的 HTML 吗? -
@C.Peck 我添加了 stats 是如何定义的原始页面的 url 是link,如果我只是循环点击,它会点击所有链接,当我切换时会出现问题到新窗口
-
首先,这行让我很困惑。
aa = a.get_attribute("idavv")-- 您正在尝试获取名为idavv的属性的值?我在页面上的任何地方都找不到该属性。我也找不到任何 ID 为simple-row-box-prematch的元素。你能帮我弄清楚你想找到哪些元素吗? -
当你打开有一个叫TODAY的按钮,它在页面的左边,当你点击那个按钮你会得到链接列表
标签: python selenium new-window