Das ist also ein bisschen eine Performance-Frage in Bezug auf Selenium Webdriver (Chromedriver) und Capybara.Capybara/Selenium: Beschleunigen des Dropdown-Menüs Auswählen?
Ich habe einige React-Select-Dropdowns mit ziemlich viel Daten in ihnen. Aus irgendeinem Grund nehmen die react-selects sehr lange Zeit, um die Option in ihnen auszuwählen. Der Code ist ziemlich einfach und ich packte es von hier: https://github.com/JedWatson/react-select/issues/832
Aber es kommt grundsätzlich nach unten zu:
page.find('.Select-control').click
page.find('.Select-option', text: 'the text').click
Das Ding ist, das funktioniert gut. Aber es dauert extrem lange (Upwards von einer Minute ein Dropdown). Jetzt ... in der Verteidigung von Capybaras haben diese Drop-downs eine Menge Optionen zur Auswahl, also dachte ich, dass die Auswahl aus dem obersten Element am schnellsten wäre, aber das scheint es nicht zu beeinflussen.
Hat Capybara/Selenium die "Optionen" in einer anderen sortierten Liste irgendwo oder so? Da würde ich davon ausgehen, dass die Auswahl aus einer Top-Option im Dropdown schneller wäre, aber es scheint nicht zu sein?
Dank tun wollen könnte, alles wird beschleunigen helfen, so werde ich diese versuchen. Verwenden Sie Xpath nicht spröde? vor allem, wenn sich die Option Bestellung ändert? Oder wäre das hier nicht betroffen? – msmith1114
@ msmith1114 Es ist nicht so, dass XPath spröde ist, es ist, dass die Art und Weise, wie die meisten neuen Benutzer von Capybara versuchen, es zu benutzen, zu brüchigen Dingen führt. Sie neigen dazu, den wirklich langen XPath, der vom Browser erzeugt wird, zu kopieren und in Capybara ablegen, was bedeutet, dass wenn ein kleines bisschen Seitenstruktur geändert wird, es für das erwartete Element ungültig ist. Die erzeugten XPaths suchen nur nach bestimmten Klassen für Elemente und nach dem Text im Element. Im Allgemeinen ist XPath schwieriger zu lesen als CSS, daher sollte die Faustregel möglichst bei CSS bleiben, CSS hat jedoch keine Textinhalt-Übereinstimmungsfähigkeit, während XPath dies tut. –
@ msmith1114 Vergessen Sie nicht, die Antwort zu akzeptieren, wenn dies die Dinge für Sie beschleunigt. –