硒无法在无头模式下工作

时间:2018-07-07 06:59:44

标签: python-3.x selenium-chromedriver

因此,我有一个基本的Selenium程序,您可以在其中单击一个按钮,然后将“ Hello World”文本复制到剪贴板。如果代码不在无头模式下,则该代码有效,但我希望它在无头模式下工作。这是启用无头模式的代码:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import pyperclip

CHROME_PATH = 'C:\\Program Files 
(x86)\\Google\\Chrome\\Application\\chrome.exe'
CHROMEDRIVER_PATH = 'C:\\Users\\ACER\\Desktop\\chromedriver_win32\\chromedriver.exe'
chrome_options = Options()
chrome_options.set_headless()
driver = webdriver.Chrome(executable_path=CHROMEDRIVER_PATH,
                          chrome_options=chrome_options
                         )  

driver.get("file://C:/Users/ACER/Desktop/index.html")
driver.find_element_by_class_name("button").click()

message = pyperclip.paste()

driver.close()

if message == "":
    print("Failed")
else:
    print(message)

这是HTML代码:

<!DOCTYPE html>
<html>
<head>
<style>
  .wrapper {
   text-align: center;
}

  .button {
   background-color: black;
   border: none;
   color: white;
   padding: 20px 30px;
   font-size:30px;
   cursor: pointer;
}

  .button:hover {
   background-color: grey;
}
</style>
</head>
<body>

<div class="wrapper">
    <button class="button" onclick="copyToClipboard('Hello World')">Click 
Here</button>
</div>

<script type="text/javascript">
  function copyToClipboard(text){
       var dummy = document.createElement("input");
       document.body.appendChild(dummy);
       dummy.setAttribute('value', text);
       dummy.select();
       document.execCommand("copy");
       document.body.removeChild(dummy);
}
</script>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,在无头模式下,页面呈现的方式有所不同。明确设置窗口大小对我来说就是固定的。

您可以在选项中进行设置:

chrome_options.add_argument("--window-size=1440, 900")

或直接在代码中

driver.set_window_size(1440, 900)