>我使用 chrome 作为驱动程序,双击/上下文单击后,提示窗口打开,但驱动程序不会切换到提示窗口。这是我尝试过的...我正在打开的页面是 google.com,搜索,然后尝试右键单击,以便我可以在不同的选项卡中打开结果。提前谢谢。
.......
element = driver.find_element_by_class_name("LC20lb")
actionchains = ActionChains(driver)
actionchains.context_click(element).perform()
# Driver needs to switch to the popup from here before it can press the down arrow.
sleep(5)
actionchains.send_keys(Keys.ARROW_DOWN).perform()
sleep(4)
driver.quit()
使用 pyautogui,您可以在网页上下文之外按向下箭头。下面将选择上下文minu的第一个选项。试试这个:
element = driver.find_element_by_class_name("LC20lb")
actionchains = ActionChains(driver)
actionchains.context_click(element).perform()
# Driver needs to switch to the popup from here before it can press the down arrow.
sleep(5)
#actionchains.send_keys(Keys.ARROW_DOWN).perform()
import pyautogui
pyautogui.press('down')
pyautogui.press('enter')
sleep(4)
driver.quit()
从您所描述的内容来看,它不是一个弹出窗口...这是一个上下文菜单。上下文菜单是特定于浏览器的,因此无法使用Selenium进行交互。还有其他方法可以在不诉诸上下文菜单的情况下执行此操作。例如,您可以获取链接的 href(A 标记(,而不是右键单击链接,打开一个新窗口,然后将该窗口导航到您从 href 检索到的 URL。
这是我尝试过的。
.......
element = driver.find_element_by_class_name("LC20lb")
actionchains = ActionChains(driver)
actionchains.context_click(element).perform()
# Driver needs to switch to the popup from here before it can press the down arrow.
sleep(5)
actionchains.send_keys(Keys.ARROW_DOWN).perform()
sleep(4)
driver.quit()
在上面的代码中,可以使用 WindowHandle 在窗口之间导航,然后在窗口上获取执行操作所需的驱动程序操作。
.......
element = driver.find_element_by_class_name("LC20lb")
actionchains = ActionChains(driver)
window_before = driver.window_handles[0]; --- this is for the first window.
actionchains.context_click(element).perform()
window_after = driver.window_handles[1]; --- this is for the second window.
driver.switch_to.window(window_after); --- switching the driver to the window that the action needs to be performed.
actionchains.send_keys(Keys.ARROW_DOWN).perform()
sleep(4)
driver.quit()
希望这对!!!有所帮助