2016-07-24 7 views
1

Ich versuche, ein Automatisierungsskript mit Salesforce und Selenium zu erstellen, um einen Anruf aufzuzeichnen. Ich konnte mein Skript dazu bringen, die Website zu laden, sich anzumelden und zur Seite "Meine Konten" zu navigieren. Auf dieser Seite befindet sich eine Tabelle mit allen Konten. Ich versuche, auf ein bestimmtes Konto zu klicken, aber Selenium kann das Element nicht finden. Hier ist, was jedes Element in der Tabelle wie folgt aussieht:Selenium and Salesforce Automation Klicken Sie auf ein bestimmtes Konto auf meiner Kontoseite

<tr class="dataRow even" onmouseover="if (typeof(hiOn) != 'undefined') {hiOn(this);}" onblur="if (typeof(hiOff) != 'undefined'){hiOff(this);}" onfocus="if (typeof(hiOn) != 'undefined'){hiOn(this);}" onmouseout="if (typeof(hiOff) != 'undefined'){hiOff(this);}"> 
<td> 
<input id="001U000000nyG6oIAE" type="checkbox" onchange="com.vod309.myaccounts.addOrRemoveAcct(this)"> 
<input id="isPerson" type="hidden" value="false"> 
</td> 
<td class="dataCell"> 
<a target="_top" href="https://na12.salesforce.com/001U000000nyG6oIAE">CAP AREA SPCH CENTER</a> 
</td> 
</tr> 

Könnte jemand mir helfen, mein Skript zu bekommen richtig auf den Link klicken auf „CAP AREA SPCH CENTER“ zu gehen?

Ich habe bereits versucht:

driver.findElement(By.linkText("CAP AREA SPCH CENTER")).click(); 
driver.findElement(By.xpath("//table/tbody/tr[55]/td[2]/a").click(); 

Und viele andere, aber aus irgendeinem Grund, es nicht richtig auf den Link zu finden. Ich denke, es könnte sein, weil die Verbindung in der Tabelle ist? Jede Hilfe wäre dankbar, danke.

+0

Was meinst du mit 'es findet nicht richtig den Link' ?? gibt es irgendeine Ausnahme ?? –

+0

Es gibt mir die Ausnahme, "kein solches Element". Obwohl, wie Sie in dem Teil sehen können, den ich oben gepostet habe, gibt es ein Element mit "CAP AREA SPCH CENTER" darin –

+0

Überprüfen Sie Ihr Element, ob es in irgendeinem Rahmen oder Iframe ist ... wenn es notwendig ist, diesen Rahmen zuerst zu wechseln wie: - 'driver.switchTo(). frame (" frame name oder id ");' .. –

Antwort

0

Sie sollten WebDriverWait implementieren, bis Element sichtbar und ermöglichen zu warten, wie unten klicken: -

WebDriverWait wait = new WebDriverWait(driver, 10); 
wait.until(ExpectedConditions.elementToBeClickable(By.linkText("CAP AREA SPCH CENTER"))).click(); 

Oder

wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//a[contains(.,'CAP AREA SPCH CENTER')]"))).click(); 

Editiert: - Sie Iframe müssen wechseln zuerst dann gehen Sie, um Element wie folgt zu finden: -

driver.switchTo().frame("itarget"); 

WebDriverWait wait = new WebDriverWait(driver, 10); 
    wait.until(ExpectedConditions.elementToBeClickable(By.linkText("CAP AREA SPCH CENTER"))).click(); 

Hoffe es hilft .. :)

+0

Danke für Ihre Hilfe, aber leider keine dieser Arbeiten, ich denke, das Problem ist etwas mit der Salesforce-Website –

+0

@PhillipPowell was meinst du, diese sind nicht arbeiten..is da irgendeine Ausnahme ??? Und stellen Sie sicher, dass dieses Element nicht in einem Frame oder Iframe ist ?? –

+0

Bitte überprüfen Sie, ob irgendein Rahmen vorhanden ist ... –

0

Haben Sie versucht find_element_by_link_text?

elem = driver.find_element_by_link_text("CAP AREA SPCH CENTER") 
elem.click() 
+0

ist nicht das gleiche wie driver.findElement (By.linkText ("CAP AREA SPCH CENTER")). Click() ;? Ich bin neu in Selen, so dass ich nicht sicher bin –

Verwandte Themen