Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 9

0
votes
answers
28 views
+10

硒的Java依賴於Maven的設置,但硒要求提供驅動程序路徑

0

我已經設置在Maven的selenium-java依賴性:硒的Java依賴於Maven的設置,但硒要求提供驅動程序路徑

<dependency> 
    <groupId>org.seleniumhq.selenium</groupId> 
    <artifactId>selenium-java</artifactId> 
    <version>3.7.1</version> 
</dependency> 

但是當我運行一個簡單的測試 - 我得到一個異常的路徑驅動程序沒有設置:The path to the driver executable must be set by the webdriver.chrome.driver system property

足夠設置Maven的依賴是不是對硒? 我錯過了Selenium無法讀取Maven依賴關係?

沙发
0
1

設置Maven的依賴是不是足夠的硒?

不,你需要告訴它在哪裏可以找到網絡驅動器在此使用類似:

System.setProperty("webdriver.chrome.driver", complete_path_to_your_chrome_driver_executable_here); 

應該解決這個問題。

您可以在pom.xml中直接執行類似的配置,方法是在屬性部分中定義一個屬性,該屬性部分包含您的路徑,並使用maven-surefire-plugin的配置部分中的systemPropertyVariables。

例如:

建立在你的pom.xml的屬性部分

 
<webriver.path>path_to_your_driver_executable</webriver.path> 

然後在你的Maven的萬無一失,插件的配置部分中添加systemPropertyVariables部分

 
<systemPropertyVariables> 
    <webdriver.chrome.driver>${webriver.path}</webdriver.chrome.driver> 
    [...] 
</systemPropertyVariables> 
0
votes
answers
28 views
+10

selenium如何啓動chrome隱藏在vb.net中?

0

selenium如何啓動隱藏在vb.net中的chrome?selenium如何啓動chrome隱藏在vb.net中?

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 

     driverS = ChromeDriverService.CreateDefaultService 
     driverS.HideCommandPromptWindow = True 
     driverO = New ChromeOptions 
     driverO.AddArgument("--incognito") 
     driverO.AddArgument("--disable-extensions") 

     driver = New ChromeDriver(driverS, driverO) 

    End Sub 
沙发
0
0

隱藏在無頭嗎?如果您在版本60或更高版本上運行Chrome,則可以添加參數'無頭'

driverO.AddArgument("headless") 
+0

OMG,謝謝!你知道如何最小化? –

+0

我不確定VB.Net,但它是'driver0.Manage()。Window.Minimize()''。語法可能有點不同,我現在在我的手機上,所以不能檢查它 – Marcel

+0

我是driverO.Manage()。Window.Minimize(),但不玩。非常感謝! –

0
votes
answers
69 views
+10

如何使用通過VPN工作的selenium webdriver訪問應用程序?

1

例如,我有一個應用程序「www.test.com」,訪問此網站我已經在firefox中安裝browsec VPN,然後我可以看到應用程序內容 - 訪問該網站沒有VPN我得到一個錯誤「您的IP地址已被阻止..bla bla「現在我想通過Selenium Webdriver測試該網站的一些UI,但是當我嘗試通過selenium webdriver訪問該網站時,由於vpn已經安裝在Firefox上,我得到了同樣的IP阻塞錯誤,但是webdriver不打擾VPN - 這是我的問題我如何通過Selenium webdriver訪問這些應用程序?如何使用通過VPN工作的selenium webdriver訪問應用程序?

沙发
0
0

您必須使用WebDriver中的Firefox配置文件加載擴展。以擴展文件的路徑通常是在這裏C:UsersadministratorAppDataRoamingMozillaFirefoxProfilesew0u966b.default-1507268891903extensions

WebDriver driver = null; 

FirefoxProfile firefoxProfile = new FirefoxProfile(); 
File addonpath = new File("path of addon/extension (.xpi file)"); 
firefoxProfile.addExtension(addonpath); 

DesiredCapabilities capabilities = DesiredCapabilities.firefox(); 
capabilities.setCapability(FirefoxDriver.PROFILE, profile); 

driver = new FirefoxDriver(capabilities); 

driver.get("http://www.helloselenium.com"); 

driver.quit(); 

http://www.helloselenium.com/2014/09/how-to-add-addon-to-firefox-instance-of.html

鍍鉻見下面的鏈接

http://www.abodeqa.com/2013/08/24/adding-add-on-in-firefox-and-chrome-using-webdriver/

要開始延伸,下面應該工作。

每個擴展名都有一個唯一的id,可用於在瀏覽器中打開擴展名。當你安裝browsec插件時,你將會得到一個像這樣的url來指示這個id。 moz-extension://f1b30486-cd88-4319-bbb5-d5e387103414/congratulations.html我不確定如何以任何其他方式獲取此ID,或者對於不同的安裝它是否會相同。我曾問一個問題在SO爲同 - Get add-on id of extensions in Firefox

更換congratulations.htmlpopup.html應該打開瀏覽器擴展。然後,您可以像對待普通網頁那樣對待它,並使用Selenium WebDriver將其自動化。以這種方式啓動擴展後,您可以加載測試中的應用程序的URL並繼續。

enter image description here

+0

謝謝@Sighil,我可以看到VPN在Firefox例如,通過腳本打開但VPN被禁用 - 我如何可以使使用硒的webdriver呢? –

0
votes
answers
16 views
+10

如何處理硒中的多個警報彈出確認?

0

如何處理硒中的多個警報彈出確認。例如:如果接受彈出窗口,它會一次又一次詢問同一個窗口。如果在點擊第5次確認/解散後彈出窗口關閉,我們如何處理相同的問題。如何處理硒中的多個警報彈出確認?

所以,請幫我在這...

+0

你能分享多次彈出的彈出窗口嗎?它是警報或模式對話框還是彈出式對話框? – DebanjanB

+0

這是面試問題之一,彈出窗口可能會接受第一次或任何。所以我們想嘗試直到關閉彈出窗口。你能幫我解決這個問題嗎? –

沙发
0
1

如果你知道的時候確切數目此警報會彈出,你可以使用一個簡單的循環與重的硬編碼數。例如:

int retries = 5; 

while (retries > 0) { 
    alertTriggerButton.click(); 

    Alert alert = driver.switchTo().alert(); 
    alert.accept(); 

    retries--; 

} 

你應該修改這個代碼,以確保它根據自己的網頁行爲,認爲像響應時間考慮作品(換句話說 - 如果需要增加相應的等待時間)。

板凳
0
0

你可以使用while。您正在檢查警報是否存在,每當它出現時,都會根據您提供的布爾值來解決它。當再也沒有新的警報時,它會斷開並繼續。

public static void resolveAllAlerts(WebDriver driver, int timeout, boolean accept) { 
    while (isAlertPresent(driver, timeout)) { 
     resolveAlert(driver, accept); 
    } 
} 


private static boolean isAlertPresent(WebDriver driver, int timeout) { 
    try { 
     Alert a = new WebDriverWait(driver, timeout).until(ExpectedConditions.alertIsPresent()); 
     if (a != null) { 
      return true; 
     } else { 
      throw new TimeoutException(); 
     } 
    } catch (TimeoutException e) { 
     // log the exception; 
     return false; 
    } 
} 

private static void resolveAlert(WebDriver driver, boolean accept) { 
    if (accept) { 
     driver.switchTo().alert().accept(); 
    } else { 
     driver.switchTo().alert().dismiss(); 
    } 
} 
0
votes
answers
38 views
+10

Python:從每個打開的Google Chrome標籤獲取所有Url

4

我需要從python 3中所有打開的Chrome瀏覽器標籤中獲取所有的URL,而不需要用戶干預。林在Windows上使用Microsoft Visual Studio Python3 10Python:從每個打開的Google Chrome標籤獲取所有Url

我用盡:

直接與開放(路徑當前選項卡)打開它 - 不工作,因爲我沒有permission-我認爲它鎖定,因爲鉻activly寫入它。

Current_Tabs_Source = open(r"C:UsersBeniAppDataLocalGoogleChromeUser 
DataDefaultCurrent Tabs", "r") 
Current_Tabs_Raw = Current_Tabs_Source.read() 
print(Current_Tabs_Raw) #just for checking 

PermissionError:[錯誤13]許可被拒絕通過sglite3

開幕 - 行不通的,因爲其鎖定。我無法在任何地方找到密碼。我試圖打開URL的歷史記錄,但它不起作用。

import sqlite3 
from os import path 

data_path = path.expanduser('~') + r"AppDataLocalGoogleChromeUser 
DataDefault" 
files = listdir(data_path) 
history_db = path.join(data_path, 'history') 

c = sqlite3.connect(history_db) 
cursor = c.cursor() 
select_statement = "SELECT urls.url, urls.visit_count FROM urls, visits 
WHERE urls.id = visits.url;" 
cursor.execute(select_statement) 

results = cursor.fetchall() 

print(results) #just for checking 

sqlite3.OperationalError:數據庫被鎖定

使用硒和第三方Chrome擴展到所有的URL複製到剪貼板 - 不工作,因爲這些擴展僅在活動窗口硒工作。所以Windows中的標籤,我想不要被複制。

我曾考慮過將Chrome擴展每30秒複製一份臨時文件。但是我只知道最小的Javascript,所以這件事讓我很生氣。

那麼有沒有人知道在Python中做到這一點的方法?任何其他解決方案,不勝感激。

+0

我想不出任何可能的方式這可以在Python來完成。我甚至不知道你如何試圖這樣使用SQLite,數據庫語言...您最好的選擇確實是更像JavaScript的前端。 – Mangohero1

+1

這將是有益的,如果你可以分享你一直工作的代碼,直到現在,所以我們可以更好地瞭解你的方法 –

+1

@HamSam我上傳了一些代碼,所以你可以看到即時嘗試 –

沙发
0
0

如果要訪問數據庫,應關閉所有瀏覽器。

Source

0
votes
answers
18 views
+10

查找圖像的網址

-1

我目前正在使用python網絡爬蟲收集在谷歌上搜索到的圖像。我用硒滾動搜索頁面,並用美麗的湯來記錄所有的元素。查找圖像的網址

對於某些圖片,我可以輕鬆找到沒有額外點擊的網址,如「http://www.XXXXX.jpg」。但是對於一些圖片,如果我不點擊它並檢查元素,那麼src部分就像「data:image/jpeg; base 64,/ ...」。通過單擊後檢查縮放的圖像,我將獲得所需的網址。但我不知道如何使用硒點擊圖片。

有沒有什麼辦法讓這類圖片的網址?

+0

參見:[我要如何做X ?](https://meta.stackoverflow.com/questions/253069/whats-the-appropriate-new-current-close-reason-for-how-do-i-do-x)對SO的期望是,用戶提出的問題不僅僅是研究來回答他們自己的問題,還會分享研究,代碼嘗試和結果。這表明你已經花時間去嘗試幫助自己,它使我們避免重申明顯的答案,最重要的是它可以幫助你得到更具體和相關的答案!另請參閱:[問] – JeffC

沙发
0
0

這可能意味着圖像編碼的HTML 的src部分內儲存的圖片,你只需要獲取文本的長行後

data:image/jpeg;base 64,/ 

,並對其進行解碼。

例如

import base64 
b64_data = "here_text" 
imgdata = base64.b64decode(b64_data) 
filename = 'some_image.jpg' # I assume you have a way of picking unique filenames 
with open(filename, 'wb') as f: 
    f.write(imgdata) 

它也可能意味着單擊縮略圖後運行JavaScript,然後點擊元素所有你需要做的就是

driver.find_element_by_css_selector(".classname").click() 
+0

現在它可能只是存儲爲Base 64字符串的縮略圖。當你點擊它時,可能會有javascript在背景中發生,它正在構建實時圖像上的鏈接。 – WombatPM

+0

在這種情況下,您可以使用Selenium點擊元素 – mduiker

+0

@mduiker謝謝各位!點擊方法確實有效。我如何構建一個while循環或for循環來連續點擊所有圖像?而且一旦我點擊了一張圖片,這張圖片的所有元素都會被記錄下來,對吧?我對網頁一無所知......抱歉。 – Yujian

0
votes
answers
30 views
+10

硒在詹金斯失敗測試

0

我想在詹金斯運行硒。當我在本地運行時,測試總是通過。但在詹金斯我總是得到錯誤:硒在詹金斯失敗測試

Configuring TestNG with: [email protected]9f1 
Starting ChromeDriver 2.34.522932 (4140ab217e1ca1bec0c4b4d1b148f3361eb3a03e) on port 10010 
Only local connections are allowed. 
Dec 18, 2017 2:35:43 AM org.openqa.selenium.remote.ProtocolHandshake createSession 
INFO: Detected dialect: OSS 
_RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL. 
File cannot be found 
Tests run: 4, Failures: 2, Errors: 0, Skipped: 0, Time elapsed: 6.807 sec <<< FAILURE! 

沒有這樣的元素:找不到元素:

進出口使用詹金斯,硒和測試

+1

你在本地機jenkins或奴隸模式詹金斯運行? – jaibalaji

+1

看看'_RegisterApplication()','_CGSDefaultConnection()爲NULL'似乎有些問題' – DebanjanB

+1

@Skyx什麼是操作系統?詹金斯運行的過程? – Grasshopper

沙发
0
1

這個問題涉及到你的Mac,並且是一個連接問題到您正在運行腳本的其他服務器。爲解決這個問題,請閱讀這個:https://discussions.apple.com/thread/1789752

0
votes
answers
11 views
+10

如何在黃瓜中使用

0

如何使用「之前」創建驅動程序實例並在黃瓜功能文件中啓動Firefox。如何在黃瓜中使用

我很熟悉背景但從未使用過。

+2

這是一個非常廣泛的問題,除了提供有關Cucumber的@Before文檔的鏈接之外,我猜這些問題在當前表單中不可回答。你有沒有嘗試過可以發佈的代碼?你想用什麼語言,甚至? –

沙发
0
1

這個例子是從ToolsQA

採取讓我們做黃瓜鉤的一些簡單的小例子,是想了解這個概念。

Feature: Test Hooks 

Scenario: This scenario is to test hooks functionality 
    Given this is the first step 
    When this is the second step 
    Then this is the third step 

步驟定義

package stepDefinition; 

import cucumber.api.java.en.Given; 
import cucumber.api.java.en.Then; 
import cucumber.api.java.en.When; 

public class Hooks_Steps { 

    @Given("^this is the first step$") 
    public void This_Is_The_First_Step(){ 
     System.out.println("This is the first step"); 
    } 

    @When("^this is the second step$") 
    public void This_Is_The_Second_Step(){ 
     System.out.println("This is the second step"); 
    } 

    @Then("^this is the third step$") 
    public void This_Is_The_Third_Step(){ 
     System.out.println("This is the third step"); 
    } 

} 

**** ***注:沒有在步驟定義中使用的邏輯。只需打印步驟摘要記錄即可。*

現在掛鉤出現在圖片中,在您的情況下,您會想要在此初始化驅動程序。

魚鉤

package utilities; 
import cucumber.api.java.After; 
import cucumber.api.java.Before; 

public class Hooks { 

    @Before 
    public void beforeScenario(){ 
     System.out.println("This will run before the Scenario"); 
    } 

    @After 
    public void afterScenario(){ 
     System.out.println("This will run after the Scenario"); 
    } 
} 

確保包import語句應該是進口cucumber.api.java.After; & import cucumber.api.java.Before; 經常有人誤會並導入Junit Annotations,所以要小心這個。

輸出掛鉤 enter image description here

Aparts的,你可以利用其它有用的註釋黃瓜,請參考上ToolsQA.com here教程。

0
votes
answers
26 views
+10

如何在C#中執行提交按鈕的Js#

0

Atm我使用Phantomjs編程,我注意到由於Phantomjs的渲染過程,js的某些元素將無法工作,對於帶有無頭選項的Selenium chrome驅動程序也是如此上。問題是按鈕有一個渲染進程附加到他們將不會執行按鈕的js點擊時,所以我想也許我可以執行我的自我,但我不知道 如何執行腳本按鈕,也不知道單擊按鈕時會調用哪個腳本。如何在C#中執行提交按鈕的Js#

<input id="next" name="signIn" class="rc-button rc-button-submit" value="Weiter" type="submit">

沙发
0
0

使用JavascriptExecutor來執行點擊事件一樣 -

JavascriptExecutor jse = (JavascriptExecutor)driver; 
jse.ExecuteScript("$('#next').click();", ""); 
0
votes
answers
33 views
+10

在Ubuntu

0

我試圖從編譯ChromeDriver編譯ChromeDriver:https://github.com/bayandin/chromedriver,指示說:在Ubuntu

「建設ChromeDriver通過建立‘chromedriver’目標這將 在名爲build文件夾中創建可執行的二進制文件。」

我該怎麼做?我花了幾個小時試圖做到這一點,但我發現的所有內容都是編譯Chromium本身的說明。我不熟悉.gn文件,是否需要編譯整個Chromium項目?

沙发
0
0

導航到src目錄,並執行以下:

gn gen outchromedriver 
ninja -C outchromedriver chromedriver 

第一步將用於此生成創建輸出目錄。第二步將構建chromedriver目標到指定的輸出目錄。