4

ヘッドレスモードのクロムブラウザでテストスクリプトを実行すると、要素リンクが表示されないため、linkElement.click()を実行できません。ヘッドモードですべてOKです。他の情報はすべてstacktraceにあります。 誰でも何をすべきか知っていますか?Headless Chromeブラウザを使用している場合、ElementNotVisibleExceptionが発生する

のStackTrace:

エラーが発生しました:メッセージ:要素見えない
(セッション情報:ヘッドレスクロム= 60.0.3112.90)
(ドライバ情報:chromedriver = 2.31.488763(092de99f48a300323ecf8c2a4e2e7cab51de5ba8)、プラットフォーム= Windows NT 6.1.7601 SP1 x86_64で)
トレースバック(最新の呼び出しの最後):
ファイル "C:\ nik-x.py"、メイン
FUNC(NIKでライン148、)
ファイル「C:\ lib \ support。 PY」、ラッパーにライン121、
上げRET
ファイル "C:\ LIB \ support.py"、ライン108、newFunc
で RES [0] =のFUNC(*引数、** kwargsから)
ファイルテストケース内の "C:¥testcases¥nik-1003.py"、行37、
i.click()
ファイル "C:¥Python36¥lib¥site-packages¥selenium¥webdriver¥remote¥webelement.py" 、クリックで行7
7、
self._execute(Command.CLICK_ELEMENT)
ファイル "C:\ Python36 \ libには\サイト - パッケージ\セレン\ webdriverをリモートの\ webelement.py \"、ライン4
93、_EXECUTEで
リターンself._parent.execute(コマンド、のparams)
ファイル "C:\ Python36 \ libに\のsite-packages \セレン\ webdriverをリモートの\ webdriver.py \"、行25
6、 ":\ webdriverをリモートの\ errorhandler.py \ \ Python36 \ libには\サイト - パッケージ\セレンC" check_response
レイズexception_classで、ライン
194、(中には
self.error_handler.check_response(レスポンス)
ファイルを実行しますメッセージ、画面、スタックトレース)
selenium.common.exceptions.ElementNotVisibleException:メッセージ:要素が表示されない
(セッション情報:ヘッドレスクローム= 60.0.3112.90)
(ドライバー情報:chromedriver = 2.31.488763(092de99f48a300323ecf8c2a4e2e7cab51de5ba8)、プラットフォーム=のWindows NT 6.1.7601 SP1 x86_64で)

ここでは、コードの私の作品です。テストページから
icons = nik.elementLeftmenuSportIcons() for i in icons[:-1]: try: i.click()

HTML:<a href="#" class="default b_futbal gaPageEventElement" data-ga-cat="Sporty" data-ga-action="futbal"> <span class="left-menu-only-large-res">Futbal</span> </a>

+0

エラースタックトレースはそれをすべて 'ElementNotVisibleExceptionは言います:要素が表示されるのを待つか、ビューポート内の要素をクリック可能にする必要があります。 – DebanjanB

+0

それはまた、JSのいくつかの実際の違いかもしれません。 JSが属性を変更している可能性があるためです。要素をクリックする代わりに、要素を取得して、すべてのプロパティ、特に座標とすべてを表示します。何か違いがあるのを見てください –

+0

@ DebanjanBありがとう、私はwait(10)、switch_to_frame、ウィンドウなどを追加しようとしましたが、私はまだ同じ問題を抱えています。 – Ghost

答えて

1

私は要素が実際にヘッドレスクロームのデフォルトのビューボックス(600x800)で表示されていないという、問題があると思います。

クロムを開始するときに、ヘッドレスブラウザのウィンドウサイズを引数として設定する必要があります。私はbrowser.manage().window().setSize(1200,1100);とwebdriverをすることにより、ウィンドウのサイズアップの設定だ

var Options = require('selenium-webdriver/chrome').Options; 
var options = new Options(); 
options.addArguments('headless'); 
options.addArguments('disable-gpu'); 
options.addArguments('window-size=1200,1100'); 

browser = builder.forBrowser('chrome').setChromeOptions(options).build(); 

追加情報

しかし、このコマンドは十分ではありません。私はJavaScriptを使用しています(私はAPIのpythonの下に似ていますと思います)ヘッドレスクロムでヘッドレスでない変形では、これは機能しています。

0

options.addArguments( 'window-size = 1200,1100');

ヘッドレスクロームモードで私のために働いた:)おかげで以下

@powerpete多くは、グルーヴィーでヘッドレスクロームのための完全な設定です: -

 ChromeOptions options = new ChromeOptions() 
     DesiredCapabilities capabilities = DesiredCapabilities.chrome() 
     options.addArguments('headless','disable-gpu','--test-type','--ignore-certificate-errors') 
     options.addArguments('window-size=1200,1100'); 
     capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true); 
     capabilities.setCapability(ChromeOptions.CAPABILITY, options) 
     driver = {new ChromeDriver(capabilities)} 
関連する問題